Доброе утро,
У меня есть список предложений на французском и список слов. Список содержит одно слово, выражения двух слов, три слова или более. Я хотел бы проверить, присутствует ли в каждом предложении моего списка предложений выражение моего списка слов, и если да, то я добавляю это предложение в список. Я придумаю способ проверить одну лемму, но для выражения, такого как "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)
Если вы можете помочь мне улучшить его. Спасибо!