我是练习 NLP 和大多数相关主题的新手,但我想制作一个可以自己收集和提取数据的程序。
更具体地说,我想告诉程序“我想要更多关于这个话题的信息(即心脏病发作)”,然后程序会从 www 周围寻找、收集和提取关于这个话题的有意义的文本。
我碰巧住在挪威,这意味着最有趣的数据将是英语,但我也想获取在挪威语中找到的有趣数据。
一个挑战是停用词的差异。例如,“are”和“and”在英语中都是停用词,在挪威语中是主语。其他挑战也可能出现。
所以我的问题是:我是否需要为每种要解释的自然语言创建单独的算法?
我是练习 NLP 和大多数相关主题的新手,但我想制作一个可以自己收集和提取数据的程序。
更具体地说,我想告诉程序“我想要更多关于这个话题的信息(即心脏病发作)”,然后程序会从 www 周围寻找、收集和提取关于这个话题的有意义的文本。
我碰巧住在挪威,这意味着最有趣的数据将是英语,但我也想获取在挪威语中找到的有趣数据。
一个挑战是停用词的差异。例如,“are”和“and”在英语中都是停用词,在挪威语中是主语。其他挑战也可能出现。
所以我的问题是:我是否需要为每种要解释的自然语言创建单独的算法?
有几种方法可以处理这个问题。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 分数,并且仅在语言到语言的基础上应用适当的分数。
所以我的问题是:我是否需要为每种要解释的自然语言创建单独的算法?
是的,我相信是的。
但是建立一个检测所用语言的模型并不难:通常采用 n-gram(n-shingles)然后对它们进行分类在实践中效果很好。顺便说一句,一开始你可以使用停用词来检测语言,例如这里描述的。
然后一旦检测到语言,我会分别为每种语言做 NLP 工作。
如果我正确理解了您的问题,您希望能够从不同语言的文本中提取关键字。可以肯定的是,您将需要每种语言的停用词列表。正如其他人提到的,这也可以通过 TF-IDF 获得。我遇到并似乎很有希望的提取关键字的算法是 ToPMine - http://web.engr.illinois.edu/~elkishk2/papers/ToPMine.pdf在本文中得到了很好的解释。
希望这可以帮助。