赞
踩
Natural Language Toolkit(NLTK)是一个强大的自然语言处理工具包,提供了许多有用的功能,可用于处理英文和中文文本数据。本文将介绍一些基本的NLTK用法,并提供代码示例,展示如何在英文和中文文本中应用这些功能。
分词是将文本拆分为单词或子句的过程。NLTK提供了适用于英文和中文的分词工具。
- import nltk
- from nltk.tokenize import word_tokenize
-
- english_sentence = "NLTK is a powerful library for natural language processing."
- english_tokens = word_tokenize(english_sentence)
- print(english_tokens)
结果:
['NLTK', 'is', 'a', 'powerful', 'library', 'for', 'natural', 'language', 'processing', '.']
- import jieba
-
- chinese_sentence = "自然语言处理是一门重要的研究领域。"
- chinese_tokens = jieba.lcut(chinese_sentence)
- print(chinese_tokens)
句子分割是将文本拆分为句子的过程。
- from nltk.tokenize import sent_tokenize
-
- english_text = "NLTK is a powerful library for natural language processing. It provides various tools for text analysis."
- english_sentences = sent_tokenize(english_text)
- print(english_sentences)
结果:
['NLTK is a powerful library for natural language processing.', 'It provides various tools for text analysis.']
- import re
-
- chinese_text = "自然语言处理是一门重要的研究领域。NLTK 和 jieba 是常用的工具库。"
- chinese_sentences = re.split('(?<!\\w\\.\\w.)(?<![A-Z][a-z]\\.)(?<=\\.|\\?)\\s', chinese_text)
- print(chinese_sentences)
请注意,中文句子分割通常需要更复杂的规则,这里使用了正则表达式作为一个简单的例子。实际中,可能需要更复杂的算法或中文分句库
停用词是在文本分析中通常被忽略的常见词语。NLTK 提供了一些停用词列表,以及用于过滤它们的方法。
- from nltk.corpus import stopwords
- from nltk.tokenize import word_tokenize
-
- english_sentence = "NLTK is a powerful library for natural language processing. It provides various tools for text analysis."
- english_tokens = word_tokenize(english_sentence)
-
- # 移除停用词
- english_stopwords = set(stopwords.words('english'))
- filtered_tokens = [word for word in english_tokens if word.lower() not in english_stopwords]
- print(filtered_tokens)
结果:
['NLTK', 'powerful', 'library', 'natural', 'language', 'processing', '.', 'provides', 'various', 'tools', 'text', 'analysis', '.']
词频分布是文本中单词出现频率的统计。NLTK 中的 FreqDist
类可用于实现这一功能。
- from nltk import FreqDist
- from nltk.tokenize import word_tokenize
- from nltk.corpus import stopwords
-
- english_sentence = "NLTK is a powerful library for natural language processing. It provides various tools for text analysis."
- english_tokens = word_tokenize(english_sentence)
-
- # 移除停用词
- english_stopwords = set(stopwords.words('english'))
- filtered_tokens = [word for word in english_tokens if word.lower() not in english_stopwords]
-
- # 计算词频分布
- freq_dist = FreqDist(filtered_tokens)
- print(freq_dist.most_common(5)) # 输出最常见的五个单词及其频率
结果:
[('.', 2), ('NLTK', 1), ('powerful', 1), ('library', 1), ('natural', 1)]
- import jieba
- from nltk import FreqDist
-
- chinese_sentence = "自然语言处理是一门重要的研究领域。NLTK 和 jieba 是常用的工具库。"
- chinese_tokens = jieba.lcut(chinese_sentence)
-
- # 计算词频分布
- freq_dist = FreqDist(chinese_tokens)
- print(freq_dist.most_common(5)) # 输出最常见的五个词及其频率
词干提取是将单词还原为其词干或词根的过程。
- from nltk.stem import PorterStemmer
-
- english_words = ["running", "jumps", "quickly"]
- stemmer = PorterStemmer()
- english_stemmed_words = [stemmer.stem(word) for word in english_words]
- print(english_stemmed_words)
结果:
['run', 'jump', 'quickli']
中文文本的词干提取通常需要复杂的处理,这里以英文为例。
词性标注是为文本中的每个单词确定其词性的过程。
- from nltk import pos_tag
- from nltk.tokenize import word_tokenize
-
- english_sentence = "NLTK is great for part-of-speech tagging."
- english_tokens = word_tokenize(english_sentence)
- english_pos_tags = pos_tag(english_tokens)
- print(english_pos_tags)
结果:
[('NLTK', 'NNP'), ('is', 'VBZ'), ('great', 'JJ'), ('for', 'IN'), ('part-of-speech', 'JJ'), ('tagging', 'NN'), ('.', '.')]
中文词性标注需要使用特定的中文语料库,这里以英文为例。
情感分析是确定文本情感倾向的过程。
- from nltk.sentiment import SentimentIntensityAnalyzer
-
- english_sentence = "NLTK makes natural language processing easy and fun."
- sia = SentimentIntensityAnalyzer()
- sentiment_score = sia.polarity_scores(english_sentence)
-
- if sentiment_score['compound'] >= 0.05:
- sentiment = 'Positive'
- elif sentiment_score['compound'] <= -0.05:
- sentiment = 'Negative'
- else:
- sentiment = 'Neutral'
-
- print(f"Sentiment: {sentiment}")
中文情感分析同样需要中文语料库和模型。这里以英文为例。
NLTK是一个强大的工具包,可以应用于多种自然语言处理任务。通过本文提供的示例,您可以了解如何在英文和中文文本中使用NLTK的不同功能。
手动下载地址
https://www.nltk.org/nltk_data/
- import nltk
- nltk.data.path.append("your donwloaded data path")
代码下载
- import nltk
- nltk.download('punkt')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。