natural language toolkit - QLGQ/learning-python GitHub Wiki
Brife Introduction
-
NLTK is a leading platform for building Python programs to work with human language data. It provides easy-to-use interfaces to over 50 corpora and lexical resources such as WordNet, along with a suite of text processing libraries for classification, tokenization, stemming, tagging, parsing, and semantic reasoning, wrappers for industrial-strength NLP libraries, and an active discussion forum.
-
NLTK 会被自然地看作是具有栈结构的一系列层,这些层构建于彼此基础之上。那些熟悉人工语言(比如 Python)的文法和解析的读者来说,理解自然语言模型中类似的 —— 但更深奥的 —— 层不会有太大困难。尽管 NLTK 附带了很多已经预处理(通常是手工地)到不同程度的全集,但是概念上每一层都是依赖于相邻的更低层次的处理。首先是断词;然后是为单词加上 标签;然后将成组的单词解析为语法元素,比如名词短语或句子(取决于几种技术中的某一种,每种技术都有其优缺点);最后对最终语句或其他语法单元进行分类。通过这些步骤,NLTK 让您可以生成关于不同元素出现情况的统计,并画出描述处理过程本身或统计合计结果的图表。
术语表
- 全集(Corpora):相关文本的集合。例如,莎士比亚的作品可能被统称为一个 文集(corpus);而若干个作者的作品称为 全集。
- 直方图(Histogram):数据集中不同单词、字母或其他条目的出现频率的统计分布。
- 结构(Syntagmatic):对语段的研究;也就是全集中字母、单词或短语连续出现的统计关系。
- 上下文无关语法(Context-free grammar):由四类形式语法构成的 Noam Chomsky 层级中的第二类。参阅 参考资料 以获得详尽描述。
基本操作
- 断词
具体讲, nltk.tokenizer.Token 类被广泛地用于存储文本的有注解的片断;这些注解可以标记很多不同的特性,包括词类(parts-of-speech)、子标志(subtoken)结构、一个标志(token)在更大文本中的偏移位置、语形词干(morphological stems)、文法语句成分,等等。实际上,一个 Token 是一种特别的字典 —— 并且以字典形式访问 —— 所以它可以容纳任何您希望的键。在 NLTK 中使用了一些专门的键,不同的键由不同的子程序包所使用。
import nltk
sentence = """At eight o'clock on Thursday morning Arthur didn't feel very good."""
tokens = nltk.word_tokenize(sentence)
tokens = ['At', 'eight', "o'clock", 'on', 'Thursday', 'morning', 'Arthur', 'did', "n't", 'feel', 'very', 'good', '.']
tagged = nltk.pos_tag(tokens)
tagged[0:6] = [('At', 'IN'), ('eight', 'CD'), ("o'clock", 'NN'), ('on', 'IN'), ('Thursday', 'NNP'), ('morning', 'NN')]