2011-10-11 100 views
0

我有两个句子数组正如你所看到的,我试图将申请者的能力与工作要求相匹配。rails - 语句数组比较

Array A 
-Must be able to use MS Office 
-Applicant should be prepared to work 40 to 50 hours a week 
-Must know FDA Regulations, FCC Regulations 
-Must be willing to work in groups 

Array B 
-Proficient in MS Office 
-Experience with FDA Regulations 
-Willing to work long hours 
-Has experience with math applications. 

有什么办法可以比较两个数组并确定有多少相似之处?最好在逐句的基础上(不只是挑出相似的单词)返回相似的百分比。

有什么建议吗?

+0

当你说“类似”时,你在找什么?你有关注的特定关键词吗?会不会像黄瓜使用正则表达式来分析场景一样工作? – natedavisolds

+0

嗯,我不完全确定。我想当我说类似的时候。像Array A的句子3那样选择,而Array B的句子2应该因为'FDA规定'而显示部分匹配。我试图获得申请人列出的能力与工作要求相匹配的整体比例。 – stewart715

回答

0

你所要求的是非常困难的,它是今天自然语言处理的嗡嗡声。

NLTK是首选的工具包,但它是在Python中。这个领域有很多学术论文。大多数情况下使用copuses to train a a model,其中假设是相似的词倾向于处于相似的语境中(即被类似词汇包围)。这在计算上非常昂贵。

您可以通过使用该NLTK库这个计划考虑拿出一个初步的解决方案:

  • 删除填充词(一,中和)
  • 使用语音恶搞的一部分识别标签动词,名词等(我会 删除名词和动词的其他名称)
  • 对于任何两个名词(动词),请使用wordnet库来获取该词的同义词 。如果你有一场比赛你算。有 很多其他文件在这使用语料库建立词汇 可以使用词频来衡量词的相似性。后面的方法是首选,因为您可能会将与 相似的单词相关联,但它们没有共同的同义词。
  • 然后,您可以给基于单词相似

其他方法考虑句子的句法结构,句子相似度的相对度量,但你没有从中得到这么多的好处。不幸的是,由于wordnet的性质,上述方法并不是很好。