Разбейте сложное/сложное предложение на простые предложения Python NLP

#python #nlp #stanford-nlp #spacy #stanza

Вопрос:

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

Я попробовал метод spacy, но он работает только с союзами: т. Е. Я иду на рынок и куплю книгу. После разбора: Я иду на рынок. Я куплю книгу. (Он разбивает его на два простых предложения)

Но когда я попытался использовать более сложные предложения, такие как:

  • Я должен сохранить этот купон на случай, если завтра вернусь в магазин. (следует разделить, так как мне нужно сохранить этот купон. Я вернулся в магазин завтра.
  • В некотором роде это ограничивает количество преступлений, происходящих каждый день. (следует разделить, как это ограничивает количество дел о преступлениях. Происходит каждый день)

Код, который у меня есть:

 import spacy

en = spacy.load('en_core_web_sm')

text = "In a way it curbs the number of crime cases happening every day."

doc = en(text)

seen = set() # keep track of covered words

chunks = []
for sent in doc.sents:
    heads = [cc for cc in sent.root.children if cc.dep_ == 'conj']

    for head in heads:
        print(head.subtree)
        words = [ww for ww in head.subtree]
        for word in words:
            seen.add(word)
        chunk = (' '.join([ww.text for ww in words]))
        chunks.append( (head.i, chunk) )

    unseen = [ww for ww in sent if ww not in seen]
    chunk = ' '.join([ww.text for ww in unseen])
    chunks.append( (sent.root.i, chunk) )

chunks = sorted(chunks, key=lambda x: x[0])

for ii, chunk in chunks:
    print(chunk)
 

Есть ли какая-либо библиотека/платформа для этого, чтобы сделать это легко. или кто-нибудь подскажет, как сгенерировать дерево предложений на spacy и проанализировать его, чтобы я мог разбить его на нужное место.