NLP模型训练

NLP模型训练,nlp,octave,weka,opennlp,Nlp,Octave,Weka,Opennlp,我刚开始学习NLP(自然语言处理),努力理解一个重要的概念。如何对系统进行培训,以便对未来输入进行关系提取 例如,我有以下几行: 汤姆在abc公司工作 杰瑞在xyz工作 组织是人工作的地方 在所有这些情况下,关系类型为“工作”的“人”“组织” 基于以上示例和一些NLP阅读资料,我认为我们需要基于词性标记而不是真实的“实体名称”来训练系统,使其对字段中的其他输入数据具有通用性。这是我真正困惑的部分 请不要简单地向我指出一些算法(SVM等),因为我知道它们是可能的,但我缺少关于算法如何处理这些行

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

例如,我有以下几行:

  • 汤姆在abc公司工作

  • 杰瑞在xyz工作

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

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

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

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

谢谢你的时间和帮助


注意:标记部分中指定的任何一种编程语言对我都适用。

你说得对。有这么多的词,仅仅使用这个词实际上不允许你开发一个好的模型。你需要减少维度。正如你所建议的,其中一种方法就是扮演演讲角色。当然,您还可以提取其他功能。例如,my.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中使用的特征。

我认为您需要更清楚地了解“NLP”的含义。我猜你的意思是自然语言处理?@NathanCraike:是的,自然语言处理。似乎没有“自然语言处理”的标签,所以不得不使用NLP.+1。谢谢如果我理解正确,您已经为每个特征(属性)创建了所有可能的值,并且数据部分包含不同组合的训练数据。你能解释一个英语例句吗?这个培训文件将如何用于这个目的?我想做的是提取句子中单词之间的关系。你们是想做无监督学习还是有监督学习?如果您的数据没有类标签,那么您将进行无监督学习(不是我上面的示例)。对于无监督数据,您可以使用Weka中提供的几种聚类算法:如K-means、EM、Cob-web、Meta-Clusterer。通过这些,您将能够将单个句子分组,希望能够将类似的句子分组在一起。对于你想做的事情,如果你只是使用POS标签,你将无法突出显示关系,因为:x在y工作。我正在处理一个类似的问题。处理语法是一回事,但试图根据语法和语义推导出意义和组是另一回事。我认为文本分类很难。是的,谢谢Steve,这些是一些有价值的输入,澄清了一些问题。祝你的博士学位好运。祝你的项目好运。