为什么不是在gensim的“短语”工具中创建所有双字母组?

问题描述 投票:0回答:1

我使用gensim创建了一个bigram模型,并尝试获取bigram句子,但是为什么没有选择所有bigram句子?

from gensim.models.phrases import Phrases, Phraser
phrases = Phrases(sentences, min_count=1, threshold=1)
bigram_model = Phraser(phrases)
sent = [u'the', u'mayor', u'of', u'new', u'york', u'was', u'there']
print(bigram_model[sent])
[u'the', u'mayor', u'of', u'new_york', u'was', u'there']

谁能解释一下如何获得所有二元论。

为什么只有'new_york'而不是'the_mayor'等?

python nlp gensim n-gram word-embedding
1个回答
0
投票

Phrases算法通过统计分析来决定将哪些单词对提升为双字母组,该分析将每个单词的基本频率与其频率一起进行比较。

因此,某些单词对将通过此测试,并被组合,而另一些则不会。如果没有得到期望的配对,则可以使用Phrases类选项(包括thresholdmin_count和至少一种替代评分机制)对算法进行某种程度的调整。

但是,即使经过最大程度的调整,它也不会创建我们作为自然语言使用者会感知到的所有短语,因为它对语法一无所知,也不了解世界上与逻辑相关的实体。它只知道训练文本中的频率统计信息。

因此,我们会错过一些自然而又理想的配对,而将其造成的配对我们认为是不合逻辑的。尽管如此,即使使用了这些不美观的配对(创建的文本看起来对人不对),转换后的文本通常仍可以在某些下游分类或信息检索任务中更好地工作。

如果您真的只是想要所有可能的双字母组,那将是一个简单得多的文本转换,不需要gensim的Phrases的多次遍历和内部统计信息收集。

但是,如果您确实想使用gensim的Phrases技术,则只有在拥有大量训练数据的情况下,它才能表现良好。仅有几十个单词(甚至数万个单词)的玩具大小的文本不会产生良好的效果。您希望有数百万至数千万个训练词有机会真正检测出统计上有效的词对。

© www.soinside.com 2019 - 2024. All rights reserved.