Используйте фрейм данных и назначьте шаблон с помощью Spacy - PullRequest
0 голосов
/ 13 апреля 2020

Я хотел бы, чтобы кто-то помог мне со следующим:

Я хотел бы, чтобы вы использовали spacy для идентификации шаблона в кадре данных

Это кадр данных: Ввод

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"])

Шаблон выглядит следующим образом:

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 строк.

Вывод, который я получу sh, будет следующим:

введите описание изображения здесь

1 Ответ

0 голосов
/ 13 апреля 2020

Вы можете просто определить функцию скажем get_matches(), которая принимает текст в качестве ввода и возвращает «совпадения», а затем применяет лямбда-функцию к кадру данных следующим образом:

testNet['MATCH'] = testNet.CONTENT.apply(lambda x : get_matches(x))
...