如何使用NLTK分词时排除介词与连词?
过滤NLTK分词结果保留核心词汇
看起来你已经走对路了——分词和词性标注是筛选核心词汇的关键步骤!接下来只需要根据词性过滤掉那些“辅助性虚词”,就能得到你想要的核心词汇列表。
具体步骤和代码实现
先把你已经完成的步骤整合,加上过滤逻辑:
import nltk # 第一次使用NLTK需要下载必要语料,取消注释运行即可 # nltk.download('punkt') # nltk.download('averaged_perceptron_tagger') from nltk.tokenize import word_tokenize from nltk.tag import pos_tag sentence = "The other day I met with Juan and Mary" tokens = word_tokenize(sentence) tagged_tokens = pos_tag(tokens) # 定义要保留的核心词性集合 # 涵盖代词、形容词、各类名词、各类动词 core_pos_tags = {'PRP', 'JJ', 'NN', 'NNS', 'NNP', 'NNPS', 'VBD', 'VB', 'VBG', 'VBN', 'VBP', 'VBZ'} # 过滤出核心词汇 core_tokens = [token for token, tag in tagged_tokens if tag in core_pos_tags] print(core_tokens)
运行这段代码后,输出正好是你想要的:
['other', 'day', 'I', 'met', 'Juan', 'Mary']
为什么这样过滤?
简单解释下这些词性对应的核心成分:
PRP:人称代词(比如"I"),是句子的主语核心JJ:形容词(比如"other"),用来修饰核心名词NN/NNS/NNP/NNPS:各类名词(普通名词、专有名词,比如"day"、"Juan"、"Mary"),是句子的实体核心VBD/VB/VBG/VBN/VBP/VBZ:各类动词(过去式、原形、现在分词等,比如"met"),是句子的动作核心
而你要去掉的The(DT,限定词)、with(IN,介词)、and(CC,连词)都属于虚词,主要起语法连接作用,不承载核心语义,所以可以直接排除。
如果之后你需要调整核心词汇的范围,只要修改core_pos_tags集合就行——比如不想保留形容词,就去掉'JJ';想加入副词,就加上'RB'这类副词词性标签。
内容的提问来源于stack exchange,提问作者marisa
相关产品推荐
相关产品推荐

