赞
踩
在本期文章中,小生向您介绍了自然语言工具包(Natural Language Toolkit),它是一个将学术语言技术应用于文本数据集的 Python 库。称为“文本处理”的程序设计是其基本功能;更深入的是专门用于研究自然语言的语法以及语义分析的能力。
鄙人并非见多识广, 语言处理(linguistic processing) 是一个相对新奇的领域。如果在对意义非凡的自然语言工具包(NLTK)的说明中出现了错误,请您谅解。NLTK 是使用 Python 教学以及实践计算语言学的极好工具。此外,计算语言学与人工智能、语言/专门语言识别、翻译以及语法检查等领域关系密切。
NLTK 会被自然地看作是具有栈结构的一系列层,这些层构建于彼此基础之上。那些熟悉人工语言(比如 Python)的文法和解析的读者来说,理解自然语言模型中类似的 —— 但更深奥的 —— 层不会有太大困难。
尽管 NLTK 附带了很多已经预处理(通常是手工地)到不同程度的全集,但是概念上每一层都是依赖于相邻的更低层次的处理。首先是断词;然后是为单词加上 标签;然后将成组的单词解析为语法元素,比如名词短语或句子(取决于几种技术中的某一种,每种技术都有其优缺点);最后对最终语句或其他语法单元进行分类。通过这些步骤,NLTK 让您可以生成关于不同元素出现情况的统计,并画出描述处理过程本身或统计合计结果的图表。
在本文中,您将看到关于低层能力的一些相对完整的示例,而对大部分高层次能力将只是进行简单抽象的描述。现在让我们来详细分析文本处理的首要步骤。
断词(Tokenization)
您可以使用 NLTK 完成的很多工作,尤其是低层的工作,与使用 Python 的基本数据结构来完成相比,并没有太大的区别。不过,NLTK 提供了一组由更高的层所依赖和使用的系统化的接口,而不只是简单地提供实用的类来处理加过标志或加过标签的文本。具体讲,nltk.tokenizer.Token 类被广泛地用于存储文本的有注解的片断;这些注解可以标记很多不同的特性,包括词类(parts-of-speech)、子标志(subtoken)结构、一个标志(token)在更大文本中的偏移位置、语形词干(morphological stems)、文法语句成分,等等。实际上,一个 Token 是一种特别的字典 —— 并且以字典形式访问 —— 所以它可以容纳任何您希望的键。在 NLTK 中使用了一些专门的键,不同的键由不同的子程序包所使用。
让我们来简要地分析一下如何创建一个标志并将其拆分为子标志:
1 >>> from nltk.tokenize import *
2
3 >>> t = Token(TEXT='This is my first test sentence')4
5 >>> WSTokenizer().tokenize(t, addlocs=True) #break on whitespace
6
7 >>> print t['TEXT'] This ismy first test sentence8
9 >>> print t['SUBTOKENS'] [@[0:4c], @[5:7c], @[8:10c], @[11:16c], @[17:21c], @[22:30c]]10
11 >>> t['foo'] = 'bar'
12
13 >>> t @[0:4c], @[5:7c], @[8:10c], @[11:16c], @[17:21c], @[22:30c]]>
14
15 >>> print t['SUBTOKENS'][0] @[0:4c]16
17 >>> print type(t['SUBTOKENS'][0])
概率&#x
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。