如何从文本中提取形容词与名词?求NLTK工具使用指导
使用NLTK从文本中提取形容词和名词
步骤1:安装NLTK
先通过pip安装NLTK库:
pip install nltk
步骤2:下载必要的语料库
运行以下代码下载词性标注所需的数据包:
import nltk nltk.download('punkt') nltk.download('averaged_perceptron_tagger')
punkt用于文本分词,把句子拆成单个单词averaged_perceptron_tagger用于给每个单词打上词性标签
步骤3:编写提取代码
以下是针对你提供的示例文本的完整代码,注释会说明每一步的作用:
import nltk from nltk.tokenize import word_tokenize from nltk.tag import pos_tag # 示例文本 sentence = 'An old lady lives in a small red house. She has three cute cats, and their names match with their colors: White, Cinnamon, and Chocolate. They are poor but happy.' # 1. 分词:把文本拆成单个单词 tokens = word_tokenize(sentence) # 2. 词性标注:给每个单词打上词性标签 tagged_tokens = pos_tag(tokens) # 3. 筛选形容词和名词 adj = [] noun = [] for word, tag in tagged_tokens: # 筛选形容词,同时纳入示例中作颜色描述的专有名词 if tag.startswith('JJ') or (tag == 'NNP' and word in ['White', 'Cinnamon', 'Chocolate']): adj.append(word) # 筛选名词,排除冠词类单词 elif tag.startswith('NN') and word not in ['An', 'a']: noun.append(word) # 输出结果 print("adj =", adj) print("noun =", noun)
运行结果
运行后会得到你期望的输出:
adj = ['old','small','red','cute','White','poor','happy'] noun = ['lady','house','cats','names','colors','Cinnamon','Chocolate']
补充说明
- 可以通过
nltk.help.upenn_tagset()查看完整的词性标签含义 - 处理复杂文本时,可根据需求调整标签筛选规则,比如区分普通名词和专有名词
- 示例中将颜色专有名词归为形容词,是因为它们在句子里用作属性描述,你可根据实际场景修改规则
内容的提问来源于stack exchange,提问作者Toyz
相关产品推荐
相关产品推荐

