📜  在Python中使用 NLTK 使用停用词进行部分语音标记(1)

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

在Python中使用 NLTK 使用停用词进行部分语音标记

自然语言工具包NLTK是Python中处理自然语言的经典库。在处理自然语言数据时,一个非常重要的步骤就是进行语音标记(part-of-speech tagging),即对句子中的每个单词进行词性标注。在进行语音标记时,有时候需要忽略一些常见但无实际意义的词,例如代词、连词等,这时候就可以使用停用词(stop words)进行过滤。

安装NLTK

在使用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函数接受一个文本字符串作为输入,经过句子切分和停用词过滤后,对每个句子进行语音标记,并返回标记结果。标记结果是一个列表,每个元素是一个列表,包含单词和词性标记。