自然语言工具包¶
NLTK 是一个领先的平台,用于构建处理人类语言数据的 Python 程序。它提供了易于使用的接口,可访问 超过 50 个语料库和词汇资源(如 WordNet),并配有一套用于分类、分词、词干提取、词性标注、句法分析和语义推理的文本处理库,以及用于工业级 NLP 库的包装器和一个活跃的 讨论论坛。
得益于一本将编程基础与计算语言学主题相结合的实操指南,以及全面的 API 文档,NLTK 非常适合语言学家、工程师、学生、教育工作者、研究人员和行业用户使用。NLTK 支持 Windows、macOS 和 Linux。最重要的是,NLTK 是一个免费、开源且由社区驱动的项目。
NLTK 被誉为“一款用于计算语言学教学和实践的绝佳工具,且基于 Python 开发”,也是“一款用于处理自然语言的卓越库”。
《Python 自然语言处理》 (Natural Language Processing with Python) 为语言处理编程提供了实用的入门指导。该书由 NLTK 的创作者编写,引导读者掌握编写 Python 程序、处理语料库、文本分类、分析语言结构等基础知识。该书的在线版本已针对 Python 3 和 NLTK 3 进行了更新。(原始的 Python 2 版本仍可在 https://nltk.org.cn/book 获取。)
您可以使用 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", 'JJ'), ('on', 'IN'),
('Thursday', 'NNP'), ('morning', 'NN')]
识别命名实体
>>> entities = nltk.chunk.ne_chunk(tagged)
>>> entities
Tree('S', [('At', 'IN'), ('eight', 'CD'), ("o'clock", 'JJ'),
('on', 'IN'), ('Thursday', 'NNP'), ('morning', 'NN'),
Tree('PERSON', [('Arthur', 'NNP')]),
('did', 'VBD'), ("n't", 'RB'), ('feel', 'VB'),
('very', 'RB'), ('good', 'JJ'), ('.', '.')])
显示句法树
>>> from nltk.corpus import treebank
>>> t = treebank.parsed_sents('wsj_0001.mrg')[0]
>>> t.draw()
注:如果您发表了使用 NLTK 的研究成果,请按以下方式引用 NLTK 著作:
Bird, Steven, Edward Loper and Ewan Klein (2009), Natural Language Processing with Python. O’Reilly Media Inc.