我有2句使用NLP在他們的語法的基礎上,比較於語法的基礎上兩句。我對NLP完全陌生,想知道是否有算法來確定這一點。我知道如何使用單詞相似性和情感進行比較。比較使用NLP
Q
比較使用NLP
0
A
回答
0
您可以使用NLTK WordNet中的同義詞集來衡量兩句話
這裏是如何產生的所有可能的同義詞集,而無需指定語法之間的相似性,你可以在以後選擇哪一個同義詞集使用基於特定標準
import pandas as pd
import nltk
from nltk.stem.porter import PorterStemmer
from nltk.corpus import wordnet as wn
import itertools
#use stemmer
stm = PorterStemmer()
sent1 = "I like hot dogs"
sent2 = "My father's favourite food is hot dog"
#Convert the tag given by nltk.pos_tag to the tag used by wordnet.synsets
tag_dict = {'N': 'n', 'J': 'a', 'R': 'r', 'V': 'v'}
s1 = nltk.pos_tag(nltk.word_tokenize(sent1))
s1 = dict(filter(lambda x: len(x[1])>0,
map(lambda row: (row[0],wn.synsets(
stm.stem(row[0]),
tag_dict[row[1][0]])) if row[1][0] in tag_dict.keys()
else (row[0],[]),s1)))
s2 = nltk.pos_tag(nltk.word_tokenize(sent2))
s2 = dict(filter(lambda x: len(x[1])>0,
map(lambda row: (row[0],wn.synsets(
stm.stem(row[0]),
tag_dict[row[1][0]])) if row[1][0] in tag_dict.keys()
else (row[0],[]),s2)))
這裏是在字典中的值的S1
dogs [Synset('dog.n.01'), Synset('frump.n.01'), Synset('dog.n.03'), Synset('cad.n...
hot [Synset('hot.a.01'), Synset('hot.s.02'), Synset('hot.a.03'), Synset('hot.s.0...
like [Synset('wish.v.02'), Synset('like.v.02'), Synset('like.v.03'), Synset('like...
樣品在這裏是一種方法。在這裏我測量兩個單詞的所有可能的同義詞之間的相似度,然後取最大值。
res = {}
for w2,gr2 in s2.items():
for w1,gr1 in s1.items():
tmp = pd.Series(list(map(lambda row: row[1].path_similarity(row[0]),
itertools.product(gr1,gr2)))).dropna()
if len(tmp)>0:
res[(w1,w2)] = tmp.max()
print(res)
輸出
{('dogs', 'dog'): 1.0,
('dogs', 'father'): 0.16666666666666666,
('dogs', 'food'): 0.25,
('dogs', 'is'): 0.10000000000000001,
('hot', 'hot'): 1.0,
('hot', 'is'): 0.33333333333333331,
('like', 'is'): 0.33333333333333331}
現在,我們發現最大的相似句子中的每個單詞實現。然後取均值
similarity = pd.Series(res).groupby(level=0).max().mean()
print(similarity)
輸出爲.778
以上是常見的方法測量文檔相似時。如果你正在尋找比較語法,你可能需要使用部分的語音捉像pos_tag(或使用標註語料像nltk.corpus.brown.tagged_words()
)上的兩個句子,然後找到標籤之間的距離捷卡。
+0
不好意思回答遲到,謝謝!這是我需要的東西。我之前使用過synsets,但是用於比較單個單詞,不知道如何使用synsets來比較句子。 –
相關問題
- 1. 在Python NLP比較套
- 2. NLP /機器學習文本比較
- 3. NLP:比較分析,並標記句子
- 4. 比較使用==
- 5. 使用比較
- 6. 比較使用python
- 7. 比較使用LINQ
- 8. 比較使用Javascript
- 9. 比較使用XSLT
- 10. 比較使用LINQ
- 11. 比較使用python
- 12. 比較使用C#
- 13. 使用strcmp比較
- 14. 比較使用LINQ
- 15. 比較使用jquery
- 16. 比較使用Python
- 17. 比較使用python
- 18. 比較使用validate.js
- 19. 比較使用jQuery
- 20. 使用make_tuple用於比較
- 21. 使開關使用===比較不==比較在PHP
- 22. 使用通用比較器進行字符串比較
- 23. 比較比較Int
- 24. 使用isEqualToString來比較NSString
- 25. 使用MATLAB比較列
- 26. 最短使用比較
- 27. 使用SQL比較表
- 28. 比較驗證使用C#
- 29. 比較日期使用JavaScript
- 30. 使用Javascript比較時間
「比較它們的語法的基礎上,」 你可以更多地討論這一點?也許有一個例子? –
假設我有句話:「我喜歡熱狗」和「我的父親最喜歡的食物是熱狗」。現在我想比較這兩個句子,他們通過使用NLP就他們的語法有多相似。 –
它仍然不是很清楚,我正是你想要做的,比較有多少常用動詞有哪些?或常見的形容詞?或依賴性解析結構,結構有多常見? –