2

我刚开始学习 NLP(自然语言处理)并努力理解一个重要概念。如何训练系统以对未来输入进行关系提取?

例如,我有几行,例如:

  • 汤姆在 abc 公司工作

  • 杰瑞在 xyz 工作

  • 组织是人工作的地方。

在所有这些情况下,关系都是“人”“组织”,关系类型为“工作”

基于上述示例和一些 NLP 阅读,我认为我们需要基于词性标签而不是真正的“实体名称”来训练系统,以使其对字段中的其他输入数据具有通用性。这是我真的很困惑的部分。

请不要简单地指出一些算法(SVM 等),因为我知道它们是可能的,但我缺少关于算法如何处理这些行以处理其他输入的详细信息。我看到的所有示例都直接提供模型并告诉使用它们,因此我无法构建一些我想要的东西。

任何关于算法(任何示例算法都可以)如何使用上述句子来构建训练模型的示例都会非常有帮助。

感谢您的时间和帮助。

注意:标签部分中指定的任何一种编程语言对我来说都可以。

4

1 回答 1

2

你是对的。有这么多的词,仅仅使用这个词实际上并不能让你开发出一个好的模型。你需要降低维度。正如您所建议的,一种方法是参加演讲。当然,您还可以提取其他特征。例如,我的一个 .arff 文件的以下一小部分用于确定句子中的句点是否标记了结尾:

@relation period

@attribute minus_three {'CC', 'CD', 'DT', 'FW', 'IN', 'JJ', 'JJR', 'JJS', 'LS', 'MD', 'NN', 'NNPS', 'NNS', 'NP', 'PDT', 'PRP', 'PRP$', 'RB', 'RBR', 'RBS', 'RP', 'UH', 'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ', 'WDT', 'WP','WRB', 'NUM', 'PUNC', 'NEND', 'RAND'}
@attribute minus_three_length real
@attribute minus_three_case {'UC','LC','NA'}
@attribute minus_two {'CC', 'CD', 'DT', 'FW', 'IN', 'JJ', 'JJR', 'JJS', 'LS', 'MD', 'NN', 'NNPS', 'NNS', 'NP', 'PDT', 'PRP', 'PRP$', 'RB', 'RBR', 'RBS', 'RP', 'UH', 'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ', 'WDT', 'WP','WRB', 'NUM', 'PUNC', 'NEND', 'RAND'}
@attribute minus_two_length real
@attribute minus_two_case {'UC','LC','NA'}
@attribute minus_one {'CC', 'CD', 'DT', 'FW', 'IN', 'JJ', 'JJR', 'JJS', 'LS', 'MD', 'NN', 'NNPS', 'NNS', 'NP', 'PDT', 'PRP', 'PRP$', 'RB', 'RBR', 'RBS', 'RP', 'UH', 'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ', 'WDT', 'WP','WRB', 'NUM', 'PUNC', 'NEND', 'RAND'}
@attribute minus_one_length real
@attribute minus_one_case {'UC','LC','NA'}
@attribute plus_one {'CC', 'CD', 'DT', 'FW', 'IN', 'JJ', 'JJR', 'JJS', 'LS', 'MD', 'NN', 'NNPS', 'NNS', 'NP', 'PDT', 'PRP', 'PRP$', 'RB', 'RBR', 'RBS', 'RP', 'UH', 'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ', 'WDT', 'WP','WRB', 'NUM', 'PUNC', 'NEND', 'RAND'}
@attribute plus_one_length real
@attribute plus_one_case {'UC','LC','NA'}
@attribute plus_two {'CC', 'CD', 'DT', 'FW', 'IN', 'JJ', 'JJR', 'JJS', 'LS', 'MD', 'NN', 'NNPS', 'NNS', 'NP', 'PDT', 'PRP', 'PRP$', 'RB', 'RBR', 'RBS', 'RP', 'UH', 'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ', 'WDT', 'WP','WRB', 'NUM', 'PUNC', 'NEND', 'RAND'}
@attribute plus_two_length real
@attribute plus_two_case {'UC','LC','NA'}
@attribute plus_three {'CC', 'CD', 'DT', 'FW', 'IN', 'JJ', 'JJR', 'JJS', 'LS', 'MD', 'NN', 'NNPS', 'NNS', 'NP', 'PDT', 'PRP', 'PRP$', 'RB', 'RBR', 'RBS', 'RP', 'UH', 'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ', 'WDT', 'WP','WRB', 'NUM', 'PUNC', 'NEND', 'RAND'}
@attribute plus_three_length real
@attribute plus_three_case {'UC','LC','NA'}
@attribute left_before_reliable real
@attribute right_before_reliable real
@attribute spaces_follow_period real
@attribute class  {'EOS','NEOS'}

@data

VBP, 2, LC,NP, 4, UC,NN, 1, UC,NP, 6, UC,NEND, 1, NA,NN, 7, LC,31,47,1,NEOS
NNS, 10, LC,RBR, 4, LC,VBN, 5, LC,?, 3, NA,NP, 6, UC,NP, 6, UC,93,0,0,EOS
VBD, 4, LC,RB, 2, LC,RP, 4, LC,CC, 3, UC,UH, 5, LC,VBP, 2, LC,19,17,2,EOS

编辑(基于问题):所以,这是一个有监督的学习实验。训练数据来自段落样式格式的普通句子,但被转换为以下向量模型:

  • 第 1 列:类别:句末或非句末
  • 第 2-8 列:围绕相关期间的 +/- 3 个单词
  • 第 9,10 列:分别在下一个可靠句子定界符(例如 ?、! 或段落标记)之前的句点的左/右字数。
  • 第 11 列:句点后面的空格数。

当然,这不是一个很难解决的复杂问题,但它是对 Weka 的一个很好的小介绍。由于我们不能只使用单词作为特征,所以我使用了他们的 POS 标签。我还提取了单词的长度,单词是否大写等。

因此,您可以提供任何东西作为测试数据,只要您能够将其转换为上面的矢量模型并提取 .arff 中使用的特征。

于 2013-05-11T06:09:02.673 回答