📅  最后修改于: 2023-12-03 15:23:25.947000             🧑  作者: Mango
自然语言工具包NLTK是Python中处理自然语言的经典库。在处理自然语言数据时,一个非常重要的步骤就是进行语音标记(part-of-speech tagging),即对句子中的每个单词进行词性标注。在进行语音标记时,有时候需要忽略一些常见但无实际意义的词,例如代词、连词等,这时候就可以使用停用词(stop words)进行过滤。
在使用NLTK之前,需要先安装它。可以使用pip命令进行安装:
pip install nltk
NLTK自带了多种语言的停用词列表,可以直接从库中下载。下载过程需要联网,可以使用以下命令进行下载:
import nltk
nltk.download('stopwords')
下载完成后,可以使用如下代码进行加载:
from nltk.corpus import stopwords
stop_words = set(stopwords.words('english'))
其中,'english'指定了要加载英文的停用词列表,也可以替换成其他语言的名称。
在加载了停用词后,可以使用nltk库中的pos_tag函数进行语音标记。该函数的输入是一个词汇列表,输出是每个单词及其对应的词性标注,词性标记遵循Penn Treebank标准。
from nltk.tokenize import word_tokenize, sent_tokenize
from nltk.corpus import stopwords
stop_words = set(stopwords.words('english'))
def pos_tag(text):
# 切分成句子
sentences = sent_tokenize(text)
# 对每个句子进行词语切分和停用词过滤
filtered_words = []
for sentence in sentences:
words = word_tokenize(sentence)
filtered = [word for word in words if word.lower() not in stop_words]
filtered_words.append(filtered)
# 进行语音标记
tagged_words = []
for words in filtered_words:
tagged = nltk.pos_tag(words)
tagged_words.append(tagged)
return tagged_words
上述代码中,pos_tag函数接受一个文本字符串作为输入,经过句子切分和停用词过滤后,对每个句子进行语音标记,并返回标记结果。标记结果是一个列表,每个元素是一个列表,包含单词和词性标记。