可爱的 Python: 自然语言工具包入门
2007-03-29 12:38:25 来源:WEB开发网核心提示: 在本文中,您将看到关于低层能力的一些相对完整的示例,可爱的 Python: 自然语言工具包入门(2),而对大部分高层次能力将只是进行简单抽象的描述,现在让我们来详细分析文本处理的首要步骤,一个 Token 是一种特别的字典 —— 并且以字典形式访问 —&
在本文中,您将看到关于低层能力的一些相对完整的示例,而对大部分高层次能力将只是进行简单抽象的描述。现在让我们来详细分析文本处理的首要步骤。
断词(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'>
更多精彩
赞助商链接