【问题标题】:Is there an algorithm to identify the most salient word from a given set of words?是否有一种算法可以从给定的一组单词中识别出最显着的单词?
【发布时间】:2014-02-21 07:34:05
【问题描述】:

我试图从一组给定的随机词中找出一个词的重要性。例如,我想知道“事故”是“男人、女人、事故”中最重要的一个词。一个简单的解决方案是获取每个单词的 WordNet 深度,并根据单词深度的不同来计算单词的重要性。该解决方案非常耗时,因为这需要 n(n-1) 次计算来生成最终重要性。有没有更好的解决方案来处理这种情况?

【问题讨论】:

  • 这和python有什么关系?
  • 啊,我的错。我在当前的实现中使用 nltk 和 python。我将编辑 qn。马上。
  • 你对“重要性”有正确的定义吗?如果它与信息内容有关,也许您可​​以简单地使用语料库中的频率计数(常用词往往不太具体)。
  • 就像我在问题中所说的,重要性来自于单词的集合。我没有使用段落或句子,而只是提供了几个单词。我可以举的另一个例子是“man,walk,shot”,其中“shot”出现在这组词中最重要的词。

标签: word similarity wordnet


【解决方案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 的 Word Usage Trends 框中的频率计数:

man          0.0289
woman        0.0149
walk         0.0064
shot         0.0049
accident     0.0048

幸运的是,这些数字与您给出的正确答案相符:事故和枪击。

【讨论】:

  • 感谢您提供解决此问题的好方法。我最初使用所有引理的频率计数的倒数来找到单词显着性。词干确实出现在我的脑海中,但 NLTK 或任何文字引擎的词干都非常糟糕。
猜你喜欢
  • 2019-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-07
  • 1970-01-01
  • 1970-01-01
  • 2017-10-10
相关资源
最近更新 更多