一种算法可以从不同自然语言的文本中获取关键字吗?

数据挖掘 数据挖掘 nlp 算法
2021-10-01 09:48:56

我是练习 NLP 和大多数相关主题的新手,但我想制作一个可以自己收集和提取数据的程序。

更具体地说,我想告诉程序“我想要更多关于这个话题的信息(即心脏病发作)”,然后程序会从 www 周围寻找、收集和提取关于这个话题的有意义的文本。

我碰巧住在挪威,这意味着最有趣的数据将是英语,但我也想获取在挪威语中找到的有趣数据。

一个挑战是停用词的差异。例如,“are”和“and”在英语中都是停用词,在挪威语中是主语。其他挑战也可能出现。

所以我的问题是:我是否需要为每种要解释的自然语言创建单独的算法?

3个回答

有几种方法可以处理这个问题。Python 有一个名为 NLTK 的包,其中包含多种语言(包括英语和挪威语)的停用词列表。你可以简单地使用这个包,它的用法如下:

>>> from nltk.corpus import stopwords
>>> stop = stopwords.words('english')
>>> sentence = "this is a foo bar sentence"
>>> print [i for i in sentence.split() if i not in stop]
  ['foo', 'bar', 'sentence']

或者,一种自动抑制停用词的方法称为 tf-idf;tf-idf 常用于搜索引擎,以便将最重要的词提升到最前面。在您的情况下,我怀疑您希望获得英语和挪威语的 IDF 分数,并且仅在语言到语言的基础上应用适当的分数。

http://en.wikipedia.org/wiki/Tf%E2%80%93idf

所以我的问题是:我是否需要为每种要解释的自然语言创建单独的算法?

是的,我相信是的。

但是建立一个检测所用语言的模型并不难:通常采用 n-gram(n-shingles)然后对它们进行分类在实践中效果很好。顺便说一句,一开始你可以使用停用词来检测语言,例如这里描述的。

然后一旦检测到语言,我会分别为每种语言做 NLP 工作。

如果我正确理解了您的问题,您希望能够从不同语言的文本中提取关键字。可以肯定的是,您将需要每种语言的停用词列表。正如其他人提到的,这也可以通过 TF-IDF 获得。我遇到并似乎很有希望的提取关键字的算法是 ToPMine - http://web.engr.illinois.edu/~elkishk2/papers/ToPMine.pdf在本文中得到了很好的解释。

希望这可以帮助。