首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用数据帧并使用Spacy指定模式

使用数据帧并使用Spacy指定模式
EN

Stack Overflow用户
提问于 2020-04-13 07:46:45
回答 1查看 410关注 0票数 0

我希望有人能帮我做以下事情:

我希望使用空格来标识数据帧中的模式

这是dataframe: Input

代码语言:javascript
运行
复制
Import pandas as pd
testNet=pd.DataFrame([[12,"Excellent but I want to buy it"],
                      [18,"Super I wish to buy it"],
                      [23,"We hope to buy now"],
                      [24,"She hope to buy now and I want to buy now"],
                     ],columns=["ID","CONTENT"])

模式如下:

代码语言:javascript
运行
复制
import spacy
nlp = spacy.load("en_core_web_sm")

from spacy.matcher import Matcher

doc1=nlp("Excellent but I want to buy it")

matcher = Matcher(nlp.vocab)


pattern = [{"POS": "PRON"},{"POS": "VERB"},{"TEXT": "to", "OP": "?"}, {"LEMMA": "buy"}]

# Add the pattern to the matcher and apply the matcher to the doc
matcher.add("BUY_PATTERN", None, pattern)
matches = matcher(doc1)

print("Total matches found:", len(matches))

# Iterate over the matches and print the span text
for match_id, start, end in matches:
    print("Match found:", doc1[start:end].text)

问题是我不能使用模式中的数据帧,我只能逐行输入信息,我想输入数据帧。因为原始数据帧有300.000行。

我希望得到的输出将如下所示

enter image description here

EN

回答 1

Stack Overflow用户

发布于 2020-04-13 22:34:58

您可以简单地定义一个函数,例如get_matches(),该函数接受文本作为输入,并返回“匹配”,然后将lambda函数应用于数据帧,如下所示:

代码语言:javascript
运行
复制
testNet['MATCH'] = testNet.CONTENT.apply(lambda x : get_matches(x))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61179660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档