Python中一些自然语言工具的使用的入门教程

这篇文章主要介绍了Python中一些自然语言工具的使用的入门教程,本文来自于IBM官方网站技术文档,需要的朋友可以参考下
NLTK 是使用 Python 教学以及实践计算语言学的极好工具。此外,计算语言学与人工 智能、语言/专门语言识别、翻译以及语法检查等领域关系密切。
NLTK 包括什么

NLTK 会被自然地看作是具有栈结构的一系列层,这些层构建于彼此基础之上。那些熟悉人工语言(比如 Python)的文法 和解析的读者来说,理解自然语言模型中类似的 —— 但更深奥的 —— 层不会有太大困难。
术语表

全集(Corpora):相关文本的集合。例如,莎士比亚的作品可能被统称为一个 文集(corpus); 而若干个作者的作品称为 全集。

直方图(Histogram):数据集中不同单词、字母或其他条目的出现频率的统计分布。

结构(Syntagmatic):对语段的研究;也就是全集中字母、单词或短语连续出现的统计关系。

上下文无关语法(Context-free grammar): 由四类形式语法构成的 Noam Chomsky 层级中的第二类。参阅 参考资料 以获得 详尽描述。

尽管 NLTK 附带了很多已经预处理(通常是手工地)到不同程度的全集,但是概念上每一层 都是依赖于相邻的更低层次的处理。首先是断词;然后是为单词加上 标签;然后将成组 的单词解析为语法元素,比如名词短语或句子(取决于几种技术中的某一种,每种技术都有其优缺点); 最后对最终语句或其他语法单元进行分类。通过这些步骤,NLTK 让您可以生成关于不同元素出现情况 的统计,并画出描述处理过程本身或统计合计结果的图表。

在本文中,您将看到关于低层能力的一些相对完整的示例,而对大部分高层次能力将只是进行简单抽象的描述。 现在让我们来详细分析文本处理的首要步骤。

断词(Tokenization)

您可以使用 NLTK 完成的很多工作,尤其是低层的工作,与使用 Python 的基本数据结构来完成相比,并 没有 太 大的区别。不过,NLTK 提供了一组由更高的层所依赖和使用的系统化的接口,而不只是 简单地提供实用的类来处理加过标志或加过标签的文本。

具体讲, nltk.tokenizer.Token 类被广泛地用于存储文本的有注解的片断;这些 注解可以标记很多不同的特性,包括词类(parts-of-speech)、子标志(subtoken)结构、一个标志(token) 在更大文本中的偏移位置、语形词干 (morphological stems)、文法语句成分,等等。实际上,一个 Token 是一种 特别的字典 —— 并且以字典形式访问 —— 所以它可以容纳任何您希望的键。在 NLTK 中使用了一些专门的键, 不同的键由不同的子程序包所使用。

让我们来简要地分析一下如何创建一个标志并将其拆分为子标志:
清单 1. 初识 nltk.tokenizer.Token 类

>>> from nltk.tokenizer import *
>>> t = Token(TEXT='This is my first test sentence')
>>> WSTokenizer().tokenize(t, addlocs=True) # break on whitespace
>>> print t['TEXT']
This is my first test sentence
>>> print t['SUBTOKENS']
[<This>@[0:4c], <is>@[5:7c], <my>@[8:10c], <first>@[11:16c],
<test>@[17:21c], <sentence>@[22:30c]]
>>> t['foo'] = 'bar'
>>> t
<TEXT='This is my first test sentence', foo='bar',
SUBTOKENS=[<This>@[0:4c], <is>@[5:7c], <my>@[8:10c], <first>@[11:16c],
<test>@[17:21c], <sentence>@[22:30c]]>
>>> print t['SUBTOKENS'][0]
<This>@[0:4c]
>>> print type(t['SUBTOKENS'][0])
<class 'nltk.token.SafeToken'>

概率(Probability)

对于语言全集,您可能要做的一件相当简单的事情是分析其中各种 事件(events) 的 频率分布,并基于这些已知频率分布做出概率预测。NLTK 支持多种基于自然频率分布数据进行概率预测的方法。 我将不会在这里介绍那些方法(参阅 参考资料 中列出的概率教程), 只要说明您肯定会 期望的那些与您已经 知道的 那些(不止是显而易见的 缩放比例/正规化)之间有着一些模糊的关系就够了。

基本来讲,NLTK 支持两种类型的频率分布:直方图和条件频率分布(conditional f

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值