Как выбрать модель Spacy для использования в функции PySpark - PullRequest
1 голос
/ 09 июля 2020

Я использую просторную модель сопоставления, как определено:

from pyspark.sql.functions import udf
from pyspark.sql.types import StringType, ArrayType
import spacy
from spacy.matcher import Matcher

nlp = spacy.load("en_core_web_sm")


def spacy_matcher(text):
    doc = nlp(text)
    matcher = Matcher(nlp.vocab)
    matcher.add("NounChunks", None,  [{"POS": "NOUN", "OP": "+"}] )
    matches = matcher(doc)
    spans = [doc[start:end] for _, start, end in matches]
    return [spacy.util.filter_spans(spans)]

matcher2 = udf(spacy_matcher, ArrayType(StringType()))

Когда я пытаюсь применить этот udf к новому столбцу:

test = reviews.withColumn('chunk',matcher2('SENTENCE'))
test.show()

Я получаю ошибку травления:

NotImplementedError: [E112] Pickling a span is not supported, because spans are only views of the parent Doc and can't exist on their own. A pickled span would always have to include its Doc and Vocab, which has practically no advantage over pickling the parent Doc directly. So instead of pickling the span, pickle the Doc it belongs to or use Span.as_doc to convert the span to a standalone Doc object.

Я не очень много работал с травлением и не уверен, как с этим справиться, потому что я действительно хочу сохранить пролеты, потому что они определяют мои куски. Есть идеи, как правильно засолить?

...