2011-10-11 81 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的性質,上述方法並不是很好。