现在我正在使用nltk中的similar()方法。 但是没有按预期工作。请看下面的代码:
from nltk import word_tokenize;
import nltk;
text = """
The girl is very pretty.
""";
text = nltk.Text(word_tokenize(text));
text.similar('beautiful'); #it returns "no matches" but pretty is synonym of beautiful.
我使用错误的方法吗?或者还有其他吗?请帮帮我。
答案 0 :(得分:2)
NLTK Text
类“similar()
方法使用Distributional Similarity。
方法上的help()
说明:
similar(word, num=20) method of nltk.text.Text instance
Distributional similarity: find other words which appear in the
same contexts as the specified word; list most similar words first.
查看in the source code,similar()
使用ContextIndex
类的实例化来查找具有相似语义窗口的单词。默认情况下,它使用+/- 1个字窗口。
如果我们使用附加单词扩展您的示例以为“漂亮”和“漂亮”提供类似的语义窗口,我们将获得您正在寻找的结果。
from nltk import word_tokenize
import nltk
text = "The girl is pretty isn't she? The girl is beautiful isn't she?"
text = nltk.Text(word_tokenize(text))
text.similar('pretty')
# prints beautiful
因此,您似乎需要在文本中添加更多上下文才能获得有意义的结果。