Как напечатать оригинальные предложения на основе наличия специфицированной c леммы (одинарные или двойные выражения) в лемматизированном предложении - PullRequest
0 голосов
/ 20 апреля 2020

Доброе утро,

У меня есть список предложений на французском и список слов. Список содержит одно слово, выражения двух слов, три слова или более. Я хотел бы проверить, присутствует ли в каждом предложении моего списка предложений выражение моего списка слов, и если да, то я добавляю это предложение в список. Я придумаю способ проверить одну лемму, но для выражения, такого как "sans dent" или "s aimer" или "plus bon du tout". как я могу улучшить свой код. Поскольку все слова в моем списке лемматизированы для эффективности, поэтому я должен проверить лемму каждого слова в каждом предложении.

Представление кода с использованием spacy ::

# coding=utf-8
import os
import spacy.attrs
import spacy
from spacy.lang.fr import French
from spacy.tokenizer import Tokenizer
from spacy.util import compile_prefix_regex, compile_infix_regex, compile_suffix_regex
nlp = spacy.load("fr_core_news_md")
from spacy.matcher import Matcher
sentences_list= [ 'je mange mal', 'tu es trop gros', 'il faut s'aimer', 'il est pas trop bon en peinturie', 'Mes amies et moi avons eu peur']

lexique_domaine = [ 'bon',' s aimer', 'mal', 'avoir peur', 'avoir faire le mal', 'trop bon', 'trop chanceux']

sentences_with_word = []
    for sent in sentences_list:
        doc = nlp(sent)
        #print(doc)
        for tok in doc:
            # print(tok.text, "-->", tok.lemma_, "-->", tok.dep_, "-->", tok.pos_)
            if tok.lemma_ in lexique_domaine :
                if doc in sentences_with_word:
                    print("Phrase dans la liste")
                    #print('ok')
                else:
                    print("Phrase non dans la liste --- Mot lexique trouvé dans cette phrase:", tok.lemma_, "--> J'ajoute la phrase � la liste")
                    #print(doc)
                    sentences_with_word.append(doc)


    print(sentences_with_word)
    sentences_with_word_len = len(sentences_with_word)
    print("phrases extraites :", sentences_with_word_len)

Если вы можете помочь мне улучшить его. Спасибо!

...