可爱的 Python: 自然语言工具包入门
2007-03-29 12:38:25 来源:WEB开发网核心提示: 概率(Probability)对于语言全集,您可能要做的一件相当简单的事情是分析其中各种 事件(events) 的频率分布,可爱的 Python: 自然语言工具包入门(3),并基于这些已知频率分布做出概率预测,NLTK 支持多种基于自然频率分布数据进行概率预测的方法,条件频率分布是一种二维
概率(Probability)
对于语言全集,您可能要做的一件相当简单的事情是分析其中各种 事件(events) 的频率分布,并基于这些已知频率分布做出概率预测。NLTK 支持多种基于自然频率分布数据进行概率预测的方法。我将不会在这里介绍那些方法(参阅 参考资料 中列出的概率教程),只要说明您肯定会 期望的那些与您已经 知道的 那些(不止是显而易见的缩放比例/正规化)之间有着一些模糊的关系就够了。
基本来讲,NLTK 支持两种类型的频率分布:直方图和条件频率分布(conditional frequency)。 nltk.probability.FreqDist 类用于创建直方图;例如,可以这样创建一个单词直方图:
清单 2. 使用 nltk.probability.FreqDist 创建基本的直方图
>>> from nltk.probability import *
>>> article = Token(TEXT=open('cp-b17.txt').read())
>>> WSTokenizer().tokenize(article)
>>> freq = FreqDist()
>>> for word in article['SUBTOKENS']:
... freq.inc(word['TEXT'])
>>> freq.B()
1194
>>> freq.count('Python')
12
概率教程讨论了关于更复杂特性的直方图的创建,比如“以元音结尾的词后面的词的长度”。 nltk.draw.plot.Plot 类可用于直方图的可视化显示。当然,您也可以这样分析高层次语法特性或者甚至是与 NLTK 无关的数据集的频率分布。
条件频率分布可能比普通的直方图更有趣。条件频率分布是一种二维直方图 —— 它按每个初始条件或者“上下文”为您显示一个直方图。例如,教程提出了一个对应每个首字母的单词长度分布问题。我们就以这样分析:
更多精彩
赞助商链接