python - 生成二元组,但只生成名词和动词组合
问题描述
我下面有一些代码可以为我的数据框列生成二元组。
import nltk
import collections
counts = collections.Counter()
for sent in df["message"]:
words = nltk.word_tokenize(sent)
counts.update(nltk.bigrams(words))
counts = {k: v for k, v in counts.items() if v > 25}
这非常适合在我的数据框的“消息”列中生成我最常见的二元组,但是,我想获得每对二元组仅包含一个动词和一个名词的二元组。
任何使用 spaCy 或 nltk 的帮助将不胜感激!
解决方案
使用spaCy
,您可以访问各种语言的预训练模型。您可以像这样安装它们:python -m spacy download en_core_web_sm
然后,您可以轻松地运行类似这样的操作来进行自定义过滤:
import spacy
text = "The sleeping cat thought that sitting in the couch resting would be a great idea."
nlp = spacy.load('en_core_web_sm')
doc = nlp(text)
for i in range(len(doc)):
j = i+1
if j < len(doc):
if (doc[i].pos_ == "NOUN" and doc[j].pos_ == "VERB") or (doc[i].pos_ == "VERB" and doc[j].pos_ == "NOUN"):
print(doc[i].text, doc[j].text, doc[i].pos_, doc[j].pos_)
这将输出
睡觉的猫 动词名词
猫想名词动词
沙发休息名词动词
推荐阅读
- javascript - javascript toExponential方法的奇怪行为
- c# - 如何将 C# 连接到 Atom 中的远程 MySQL 服务器?
- javascript - 上传应用程序,检查特定字段/值 - 如何在代码中动态添加/删除要求并更改所需的文件格式?
- amazon-web-services - 从 Amazon AWS s3 存储桶错误获取 Html5:请求的资源上不存在“Access-Control-Allow-Origin”标头
- javascript - 如何检查来自事件源的数据是否相同
- mapbox - 找不到 fragment.jar (androidx.fragment:fragment:1.1.0)
- extjs - Sencha CMD - 如何从 Admin Dashboard 模板仅构建 MODERN 应用程序?
- groovy - groovy 脚本从文件中读取 jenkins 作业列表并更新其配置
- python - samtools - dyld:库未加载:@rpath/libcrypto.1.0.0.dylib
- reactjs - React Router Deep Link 与动态