2010-03-15 52 views
1

我聽說谷歌使用多達7克的語義相似度比較。我有興趣找到在上下文中相似的單詞(即貓和狗),我想知道如何計算n-gram模型上兩個單詞的相似度,因爲n> 2.簡單的NLP:如何使用ngram做詞相似?

所以基本上給了一個('hello','my','name'), ('hello','my','name'),這個文字就像「你好,我的名字是等等等等,我喜歡貓」,並且我生成了一個3克組合我的','名字','是'), ('name','is','blah'), ('is','blah','blah'), ('blah','blah '','I'), ('blah','I','love'), ('I','love','cats')]

請不要回應,如果你沒有給出如何做這個特定的NGRAM問題的建議

我可以用什麼樣的計算來找到'貓'和'名'之間的相似性? (應該是0.5)我知道如何用bigram來做這件事,只需將freq(cats,name)/(freq(cats,)+ freq(name,))分開。但是對於n> 2呢?

+0

你爲什麼說你的上下文中的「貓」和「名」是「相似的」?你能否通過「上下文相似性」來定義你的意思? – hashable 2010-03-15 06:56:39

+0

好吧,我不是說他們是相似的,但我只是說我想從0到1的分數,這給了我相似的程度。 名稱和貓例如應該在0.3左右,幾乎沒有任何相似之處,但對於大型數據庫,貓和狗應該大致在0.85左右,因爲它們在最大環境下非常相似。 – sadawd 2010-03-15 12:32:49

+0

我發現你的問題不清楚。如果根據上下文,你可能會嘗試下列短語:使用Python NLTK,使用分塊工具來定位短語,不需要N-gram。應用這些短語之間的自相關我愛狗,我喜歡貓會有相當程度的相關性。如果真的你想看看狗和貓在我看來與N-grams無關。如果我正在查看fr,那麼我知道的最簡單的方法就是使用WordNet的圖距測量來比較狗和貓。 – user2444314 2013-06-02 01:17:33

回答

0

我不知道谷歌是如何工作的,但是一個已知的方法是計算給定文字的文檔中的同現現象。考慮到谷歌有所有可能的文件,那麼計算一個單詞(頻率)的因子和出現率就可以很容易地得到單詞之間的關係因子。它不是一種相似性的衡量標準(如貓和狗),而是更多的搭配。

請看: http://en.wikipedia.org/wiki/Tf -idf

另一種方法是放棄互聯網文件,只專注於字典條目,有幾次試圖解析這些條目的構建「常識」的制度。這樣你就可以自動獲得關係(WordNet和人工手工製作)。

+0

這個問題特別要求你如何應用ngram來完成語義相似性。我不認爲這是我正在尋找 – sadawd 2010-03-15 12:33:35

+1

只是不考慮整個文件,但只有N-gram。閱讀Christopher D. Manning和Hinrich Schuetze的「統計自然語言處理基礎」(關於搭配檢測的章節,我相信這與你的問題有關)。 – greenoldman 2010-03-16 07:11:58

1

我搜索了「trigrams之間的相似性」,並提出了this article,它將單詞分成3段。我知道這不是你正在尋找的東西,但也許這將有助於你走向。

該文章還比較了基於3字母方法的2個單詞。看起來比較需要在兩個搜索詞之間,比如「你好,我的名字是等等,我喜歡貓」,「我的名字是別的,我喜歡狗」。當然,我不太瞭解域名,所以如果那是不正確的,我的道歉,我只是希望刺激你的問題一些想法。

+0

耶thx,它並沒有真正的幫助,但我猜想的想法仍然存在 本文主要比較字符級別的ngram – sadawd 2010-03-17 02:58:25