我试图从一组给定的随机单词中找出一个单词的重要性。例如,我想知道“事故”是“男人、女人、事故”这三个词中最重要的一个词。一个简单的解决方案是获取每个单词的 WordNet 深度,并根据单词深度的差异来计算该单词的重要性。该解决方案非常耗时,因为这需要 n(n-1) 次计算才能生成最终重要性。有没有更好的解决方案来处理这种情况?
最佳答案
通常的做法是,单词越不常见,它就越重要。
首先,选择一个代表您的问题领域的语料库。然后对其进行词频计数。您可以跳过这两组并使用预制列表,例如http://en.wiktionary.org/wiki/Wiktionary:Frequency_lists以及例如http://en.wiktionary.org/wiki/Wiktionary:Frequency_lists/PG/2006/04/1-10000然而,创建词频是 Python/NLTK 中更容易做的事情之一。
第三步是找到每个输入单词的频率,频率最低的单词是最显着的。或者,如果这是另一个步骤的输入并且实数有用,tf-idf给你这个。
您可能想首先对单词进行规范化/词干化。这将取决于您的应用程序。但是,如果您这样做,请确保在生成阶段(即标准化您的语料库)和使用阶段(标准化您的输入)都这样做。
以下是一些示例,使用位于 http://www.collinsdictionary.com/dictionary/english/man 的单词使用趋势框中的频率计数。 :
man 0.0289
woman 0.0149
walk 0.0064
shot 0.0049
accident 0.0048
幸运的是,这些数字与您给出的正确答案相符:事故和枪击。
关于cpu-word - 是否有一种算法可以从给定的单词集中识别出最显着的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21928121/