You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自动实现词性标注(part of speech tagging)与词形还原(lemmatization)

自动生成WordNet词形还原词性映射的方法

我们可以借助NLTK库的自动词性标注能力,先对文本完成分词和词性标注,再将NLTK的词性标签映射为WordNet支持的标签类型,完全替代手动配置环节。

前置依赖准备

你需要先安装NLTK库并下载所需数据,执行以下代码完成准备(下载仅需运行一次):

import nltk
nltk.download(['punkt', 'averaged_perceptron_tagger', 'wordnet'])
from nltk.stem import WordNetLemmatizer
from nltk.corpus import wordnet
from nltk.tokenize import word_tokenize

核心标签转换逻辑

NLTK返回的词性标签和WordNet要求的标签格式不匹配,需要先做一层格式转换:

def get_wordnet_pos(nltk_tag):
    """将NLTK的词性标签转换为WordNet支持的标签格式"""
    if nltk_tag.startswith('J'):
        return wordnet.ADJ
    elif nltk_tag.startswith('V'):
        return wordnet.VERB
    elif nltk_tag.startswith('N'):
        return wordnet.NOUN
    elif nltk_tag.startswith('R'):
        return wordnet.ADV
    # 其他词性默认按名词处理,可根据需求调整
    else:          
        return wordnet.NOUN

完整实现代码

直接输入原始文本即可自动生成你需要的word_type映射:

# 你的原始文本
raw_text = "International companies had interns"

# 1. 自动分词
tokens = word_tokenize(raw_text)
# 2. 自动词性标注
nltk_tags = nltk.pos_tag(tokens)
# 3. 生成word_type映射
word_type = {token: get_wordnet_pos(tag) for token, tag in nltk_tags}

# 后续词形还原逻辑和之前完全一致
lemmatizer = WordNetLemmatizer()
token_list = []
for token in tokens:
    token_list.append(lemmatizer.lemmatize(token, word_type[token]))

生成的word_type最终输出为:

{'International': 'a', 'companies': 'n', 'had': 'v', 'interns': 'n'}

其中a对应wordnet.ADJ、n对应wordnet.NOUN、v对应wordnet.VERB,和你手动配置的映射完全等价。

内容的提问来源于stack exchange,提问作者laser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 14:54:00