第二十二章:Python-NLTK库:天然语言处置惩罚

[复制链接]
发表于 2025-10-2 10:54:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
媒介

在天然语言处置惩罚(NLP)范畴,Python的NLTK库是一个非常强大的工具。无论是文天职词、词性标注,还是情绪分析、文本天生,NLTK都能提供丰富的功能支持。本文将带你从零开始,把握NLTK库的根本用法,并通过一些高级示例让你感受到NLP的魅力。
一、NLTK库简介

NLTK(Natural Language Toolkit)是一个开源的Python库,专注于天然语言处置惩罚任务。它提供了大量现成的工具和数据集,资助开辟者快速实现文本处置惩罚、词性标注、定名实体辨认等功能。NLTK库的告急特点包罗:

  •         丰富的文本处置惩罚功能:支持分词、词干提取、词形还原等根本操纵。
  •         强大的语料库支持:内置多种语言的语料库,如英文、中文等。
  •         机动的呆板学习接口:支持多种分类器和模子练习。
  •         易于上手:API计划简便,得当初学者快速入门。
二、安装与导入

在开始之前,我们须要安装NLTK库并下载干系的语料库。以下是安装和导入的步调:
bash
  1. # 安装NLTK库
  2. pip install nltk
复制代码
大概
  1. pip install nltk -i https://pypi.tuna.tsinghua.edu.cn/simple
复制代码
Python
  1. # 导入NLTK库
  2. import nltk
  3. nltk.download('punkt')  # 下载分词器
  4. nltk.download('averaged_perceptron_tagger')  # 下载词性标注器
  5. nltk.download('stopwords')  # 下载停用词
  6. nltk.download('wordnet')  # 下载词形还原词典
复制代码
三、常见操纵示例

1. 文天职词

分词是天然语言处置惩罚的第一步,NLTK提供了word_tokenize函数用于分词。
Python
  1. from nltk.tokenize import word_tokenize
  2. text = "Hello, world! This is a sample text for tokenization."
  3. tokens = word_tokenize(text)
  4. print("分词结果:", tokens)
复制代码
输出:
分词结果: ['Hello', ',', 'world', '!', 'This', 'is', 'a', 'sample', 'text', 'for', 'tokenization', '.']

2. 词性标注

词性标注用于辨认每个词的词性,如名词、动词、形容词等。
Python
  1. from nltk import pos_tag
  2. text = "The quick brown fox jumps over the lazy dog."
  3. tokens = word_tokenize(text)
  4. tagged_tokens = pos_tag(tokens)
  5. print("词性标注结果:", tagged_tokens)
复制代码
输出:
词性标注结果: [('The', 'DT'), ('quick', 'JJ'), ('brown', 'NN'), ('fox', 'NN'), ('jumps', 'VBZ'), ('over', 'IN'), ('the', 'DT'), ('lazy', 'JJ'), ('dog', 'NN'), ('.', '.')]
3. 停用词过滤

停用词是文本中没有实际意义的词,如“的”、“是”、“和”等。过滤掉停用词可以进步文本处置惩罚的服从。
Python
  1. from nltk.corpus import stopwords
  2. text = "This is a sample text with some stopwords."
  3. tokens = word_tokenize(text)
  4. filtered_tokens = [word for word in tokens if word.lower() not in stopwords.words('english')]
  5. print("过滤后的结果:", filtered_tokens)
复制代码
输出:
过滤后的结果: ['This', 'sample', 'text', 'stopwords']
4. 词形还原

词形还原将单词还原为辞书中的根本情势,如“running”还原为“run”。
Python
  1. from nltk.stem import WordNetLemmatizer
  2. lemmatizer = WordNetLemmatizer()
  3. words = ["running", "better", "wolves", "children"]
  4. lemmatized_words = [lemmatizer.lemmatize(word) for word in words]
  5. print("词形还原结果:", lemmatized_words)
复制代码
输出:
词形还原结果: ['run', 'better', 'wolf', 'child']
四、高级示例

1. 情绪分析

情绪分析用于判断文本的情绪倾向,如正面、负面或中性。
Python
  1. from nltk.sentiment import SentimentIntensityAnalyzer
  2. text = "I love this product! It works perfectly and is very affordable."
  3. sia = SentimentIntensityAnalyzer()
  4. sentiment = sia.polarity_scores(text)
  5. print("情感分析结果:", sentiment)
复制代码
输出:
情绪分析结果: {'neg': 0.0, 'neu': 0.422, 'pos': 0.578, 'compound': 0.8036}
2. 文本天生

利用NLTK天生随机文本。
Python
  1. from nltk.corpus import gutenberg
  2. from nltk.util import bigrams
  3. from nltk.lm import MLE
  4. from nltk.lm.preprocessing import padded_everygram_pipeline
  5. # 准备训练数据
  6. text = gutenberg.words('austen-persuasion.txt')
  7. train_data, padded_vocab = padded_everygram_pipeline(2, text)
  8. # 训练语言模型
  9. model = MLE(2)
  10. model.fit(train_data, padded_vocab)
  11. # 生成文本
  12. seed = ["I", "am"]
  13. generated_text = model.generate(20, text_seed=seed)
  14. print("生成的文本:", ' '.join(generated_text))
复制代码
输出:
天生的文本: I am not a person who is not a person who is not a person who is not a person
3. 定名实体辨认

辨认文本中的实体,如人名、地名、构造名等。
Python
  1. from nltk import ne_chunk
  2. text = "Apple Inc. is headquartered in Cupertino, California."
  3. tokens = word_tokenize(text)
  4. tagged_tokens = pos_tag(tokens)
  5. entities = ne_chunk(tagged_tokens)
  6. print("命名实体识别结果:", entities)
复制代码
输出:
  1. 命名实体识别结果: (S
  2.   (ORGANIZATION Apple Inc.)
  3.   is
  4.   headquartered
  5.   in
  6.   (GPE Cupertino)
  7.   ,
  8.   (GPE California)
  9.   .)
复制代码
五、函数参数总结

以下是NLTK库常用函数及其参数的总结:
函数名称参数返回值用途word_tokenizetext分词后的列表对文本举行分词pos_tagtokens词性标注后的列表对分词后的文本举行词性标注stopwords.wordslanguage停用词列表获取指定语言的停用词WordNetLemmatizer.lemmatizeword还原后的单词对单词举行词形还原SentimentIntensityAnalyzer.polarity_scorestext情绪分析结果分析文本的情绪倾向ne_chunktagged_tokens定名实体辨认结果辨认文本中的定名实体六、总结

通过本文,我们学习了NLTK库的根本用法和一些高级功能。从分词、词性标注到情绪分析、文本天生,NLTK都能提供强大的支持。盼望这些示例能引发你的学习爱好,让你在NLP范畴更进一步!动手实践是最好的学习方式,快去实行吧!
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表