为什么NLTK的Text.similar()返回None?

时间:2017-01-05 12:12:05

标签: python-3.x nltk

现在我正在使用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.

我使用错误的方法吗?或者还有其他吗?请帮帮我。

1 个答案:

答案 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 codesimilar()使用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

因此,您似乎需要在文本中添加更多上下文才能获得有意义的结果。