python - NLTK 词性问题
问题描述
我在使用 NLTK 时遇到了一些问题。我使用了一个词性标签列表,我希望当我使用 VBD 运行这段代码时,我会得到这些词:(浸入、恳求、浸泡)
lines = ("ask, Assemble, assess, dipped, pleaded, soaked, languished, panelized, used, sue, cure,
lengthen")
tokenized = nltk.word_tokenize(lines)
verbs = [word for (word, pos) in nltk.pos_tag(tokenized) if(pos[:2] == 'VBD')]
print(verbs)
我得到的是:[]
当我运行相同的代码但使用 VB 词性标签时,我希望得到(询问、组装、评估)
lines = ("ask, Assemble, assess, dipped, pleaded, soaked, languished, panelized, used, sue, cure,
lengthen")
tokenized = nltk.word_tokenize(lines)
verbs = [word for (word, pos) in nltk.pos_tag(tokenized) if(pos[:2] == 'VB')]
print(verbs)
我得到的是:[dipped', 'pleaded', 'soaked', 'languished', 'panelized', 'used]
这个输出是VBN和VBD,不是VB。
解决方案
pos[:2]
返回 的前 2 个字符pos
,对于 VBD 和 VBN,它们是... VB。如果您想要一个特定的 POS 标签,只需匹配整个标签。
verbs = [word for (word, pos) in nltk.pos_tag(tokenized) if(pos == 'VBD')]
仅当您想匹配更通用的标签集时才匹配前几个字符(在这种情况下startswith
更习惯用语)。
推荐阅读
- python - Dask中的索引问题,数据左移q
- javascript - 从 module.exports 对象数组中检索值,使用通配符,如 'includes'
- scala - 线程“主”java.lang.ClassNotFoundException 中的异常:scala.Any
- r - 根据其他列的结果向数据框添加新列
- solr - 在 solr 中禁用配置编辑
- java - 如何使用 Openapi Generator 从 Swagger yaml 生成 SpringBoot 模型
- java - RestTemplate 无法写入请求:没有为请求类型找到合适的 HttpMessageConverter [java.util.HashMap]
- ruby-on-rails - 使用多种语言过滤 Rails 验证错误 (I18n)
- android - IWindowManager - 通过反射调用 setOverscan
- slack - Mac 上的 Slack 应用程序 - # 每个人频道是否自动生成?