WEB开发网
开发学院软件开发Python 可爱的 Python: 自然语言工具包入门 阅读

可爱的 Python: 自然语言工具包入门

 2007-03-29 12:38:25 来源:WEB开发网   
核心提示: 尽管对大量文档进行关于一组确切词的搜索的能力是非常实用的( gnosis.indexer 所做的工作),但是,可爱的 Python: 自然语言工具包入门(5),对很多搜索用图而言,稍微有一些模糊将会有所帮助,您可以更好地识别出什么是一个 “单词”,幸运的是,也许,您

尽管对大量文档进行关于一组确切词的搜索的能力是非常实用的( gnosis.indexer 所做的工作),但是,对很多搜索用图而言,稍微有一些模糊将会有所帮助。也许,您不能特别确定您正在寻找的电子邮件是否使用了单词 “complicated”、“complications”、“complicating”或者“complicates”,但您却记得那是大概涉及的内容(可能与其他一些词共同来完成一次有价值的搜索)。

NLTK 中包括一个用于单词词干提取的极好算法,并且让您可以按您的喜好定制词干提取算法:

清单 4. 为语形根(morphological roots)提取单词词干

>>> from nltk.stemmer.porter import PorterStemmer
>>> PorterStemmer().stem_word('complications')
'complic'

实际上,您可以怎样利用 gnosis.indexer 及其衍生工具或者完全不同的索引工具中的词干提取功能,取决于您的使用情景。幸运的是,gnosis.indexer 有一个易于进行专门定制的开放接口。您是否需要一个完全由词干构成的索引?或者您是否在索引中同时包括完整的单词和词干?您是否需要将结果中的词干匹配从确切匹配中分离出来?在未来版本的 gnosis.indexer 中我将引入一些种类词干的提取能力,不过,最终用户可能仍然希望进行不同的定制。

无论如何,一般来说添加词干提取是非常简单的:首先,通过特别指定 gnosis.indexer.TextSplitter 来从一个文档中获得词干;然后,当然执行搜索时,(可选地)在使用搜索条件进行索引查找之前提取其词干,可能是通过定制您的 MyIndexer.find() 方法来实现。

在使用 PorterStemmer 时我发现 nltk.tokenizer.WSTokenizer 类确实如教程所警告的那样不好用。它可以胜任概念上的角色,但是对于实际的文本而言,您可以更好地识别出什么是一个 “单词”。幸运的是, gnosis.indexer.TextSplitter 是一个健壮的断词工具。例如:

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:可爱 Python 自然语言

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接