📜  Python在段落中计算令牌(1)

📅  最后修改于: 2023-12-03 15:04:38.290000             🧑  作者: Mango

Python在段落中计算令牌

在自然语言处理领域,令牌(token)是指对文本进行分割,形成一组具有语义和语法相关性的单词或符号序列。Python提供了丰富的库和工具,方便我们进行令牌分割和计算。

分割令牌

Python中,分割令牌最常用的库是nltk和spacy。nltk是自然语言处理领域的经典库,功能强大,但配置比较麻烦;spacy则更为轻便,性能优越,适合快速处理大量文本。

下面是一个使用nltk和spacy分割令牌的例子:

# 使用nltk分割令牌
import nltk
from nltk.tokenize import word_tokenize
text = "It's a beautiful day today!"
tokens = word_tokenize(text)
print(tokens)

# 使用spacy分割令牌
import spacy
nlp = spacy.load('en_core_web_sm')
doc = nlp(text)
tokens = [token.text for token in doc]
print(tokens)

分割出的令牌分别是:

["It", "'s", "a", "beautiful", "day", "today", "!"]
["It", "'s", "a", "beautiful", "day", "today", "!"]
统计词频

统计词频是自然语言处理的常见任务之一。Python中,可以使用collections模块提供的计数器(Counter)来统计词频。

下面是一个使用Counter统计词频的例子:

from collections import Counter
text = "The quick brown fox jumps over the lazy dog."
tokens = word_tokenize(text)
freq = Counter(tokens)
print(freq)

统计出的结果为:

Counter({'The': 1, 'quick': 1, 'brown': 1, 'fox': 1, 'jumps': 1, 'over': 1, 'the': 1, 'lazy': 1, 'dog': 1, '.': 1})
去除停用词

在文本分析中,常常需要去除一些常见的无意义词语,比如"a", "an", "the"等,这些无意义词语被称为停用词(stopwords)。Python中,nltk和spacy均提供了停用词列表。

下面是一个使用nltk去除停用词的例子:

from nltk.corpus import stopwords
stop_words = set(stopwords.words('english'))
text = "The quick brown fox jumps over the lazy dog."
tokens = word_tokenize(text)
filtered_tokens = [token for token in tokens if not token.lower() in stop_words]
print(filtered_tokens)

去除停用词后得到的结果为:

['quick', 'brown', 'fox', 'jumps', 'lazy', 'dog', '.']
小结

Python提供了丰富的工具和库,方便我们进行自然语言处理中的令牌分割和计算。同时,我们也可以对令牌进行统计、去重、去除停用词等操作,以便进行更加深入的文本分析。