4

我目前正在编写一个贯穿文档的脚本,提取所有关键字,然后尝试将这些关键字与在其他文档中找到的关键字进行匹配。有一些细节使这一点复杂化,但它们与我的问题不是很相关。基本上,我希望能够匹配单词,而不管它们出现的时态。

例如:如果给定字符串“swim”、“swam”和“swimming”,我想要一个可以识别这些都是同一个单词的程序,尽管它是否会将单词存储为游泳、游泳或游泳对我来说没那么重要。

我知道这个问题可以通过包含所有这些单词形式的字典来解决,但我不知道有任何字典以这种方式映射到对此有用。我更喜欢与 Python 兼容的解决方案或库,因为这是我目前用于此脚本的,但我可以使用几乎任何语言的解决方案(保存 haskell 或 eiffel 或类似的晦涩/困难的东西)一起工作)

4

3 回答 3

5

查看pywordnet

>>> N['dog']
dog(n.)
>>> N['dog'].getSenses()
('dog' in {noun: dog, domestic dog, Canis familiaris},
 'dog' in {noun: frump, dog}, 'dog' in {noun: dog},
 'dog' in {noun: cad, bounder, blackguard, dog, hound, heel},
 'dog' in {noun: pawl, detent, click, dog},
 'dog' in {noun: andiron, firedog, dog, dogiron})
于 2012-06-01T14:20:52.970 回答
1

从您的问题来看,听起来您正在寻找一种词干提取词形还原算法,该算法基本上将每个单词映射到其字典形式。一种著名的此类算法是 Porter Stemming 算法,它已经存在了 30 年,并在包括 Python 在内的多种语言中实现。您可以在http://tartarus.org/martin/PorterStemmer/找到这些实现的列表。

虽然 Porter 词干分析器已经存在很长时间并且出于比较原因可能很有用,但 Spaceghost 正确地指出这不一定是可用的最佳系统。Snowball应该比 Porter 词干算法更好。

于 2012-06-02T04:55:21.973 回答
0

你描述的这个问题似乎是一个词干问题,它们是一些有用的词干分析器,比如搬运工词干分析器。更具体地说,尝试使用 Python 的 nltk 工具包来实现它,如果我没记错的话,它带有一个搬运工词干分析器。

于 2012-06-05T08:58:09.660 回答