我有两个单词/字符串列表:x和y。 x中某些单词的另一部分在y中,我想将它们连接起来,例如,我想将列表x中的``接合''一词与列表y中的其他部分``ments''或列表x中的``operation''连接起来列表y中的“ nelle”。我还需要检查一下字典,如果列表x中的每个单词/标记都存在于dic中,而串联的单词是否存在于dic中。如果是这样,请将其附加到另一个列表(文本)。我一直尝试失败的代码是:
import nltk
from nltk.tokenize import word_tokenize
x=['les', 'engage', 'président', 'de',
'la', 'république', 'sont', 'aussi',
'ceux', 'des', 'dirigeants', 'de', 'la',
'société', 'ferroviaire', ',', 'a-t-il',
'soutenu', 'de', 'élus', 'du', 'réunis',
'à', '’', 'le', 'président', 'de', 'la',
'république', ',', '(', 'à', 'droite',
')', ',', 'aux', 'côtés', 'du', 'patron',
'de', 'la', ',', 'guillaume', 'à', 'la',
'gare', 'à', 'paris', ',', 'le',
'juillet', 'der', '’', 'irrita', ',',
'par', 'fois', ',', '’', 'usa', 'la',
'face', 'aux', 'trains', 'supprimés',
'aux', 'dessertes', 'abandonnées',
'semble', 'avoir', 'aussi', 'saisi', 'le',
'président', 'de', 'la', 'république',
'.', 'devant', 'des', 'élus', 'du', ',',
'réunis', 'mardi', 'février', 'à', '’',
'le', 'cadre', 'du', 'grand', 'débat',
',', 'a', 'eu', 'des', 'mots', 'très',
'durs', 'contre', 'la', ',', 'qui', 'a',
'fermé', 'la', 'ligne', '-', 'décembre',
',', 'alors', 'que', 'le', 'chef', 'de',
'’', '’', 'était', 'engagé', ',',
'durant', 'un', 'déplacement', 'dans',
'les', 'tué', 'en', 'avril', ',', 'à',
'ce', '’', 'elle', 'reste', 'opération']
y=['ments', 'prési', 'républi', 'vant',
'elysée', 'emmanuel', 'macron', 'cô',
'pepy', 'montparnasse', 'geoffroy',
'hasselt', '/', 'afp', 'tion', 'empare',
'gers', 'més', 'elysée', 'emmanuel',
'macron', 'epinal', 'etat', 'dépla',
'cement', 'vosges', 'effec', 'nelle']
text=[ ]
with open ('Fr-dictionary.txt') as d:
dic = word_tokenize(d.read().lower())
for i in x:
if i in dic:
text.append(i)
else:
for j in y:
concatenated = i + j
if concatenated in dic:
text.append(concatenated)
print(text)
这是怎么了?
答案 0 :(得分:0)
好的,我设法使您的代码正常工作。
首先,我必须在nltk.download('punkt')
之后添加import nltk
然后,我评论了我的解决方案,但可以随时询问是否不清楚:
cat_x_y = []
text = []
with open ('Fr-dictionary.txt') as d:
dic = word_tokenize(d.read().lower())
#for each word in x check if they are in the dictonary
for word in x:
if word in dic:
text.append(word)
#same for y
for word in y:
if word in dic:
text.append(word)
#for each word in x I want to add y and put it in cat_x_y
for i in range(len(x)):
for word in y:
cat_x_y.append(x[i]+word)
#for each word in y I want to add x and put it in cat_x_y
for j in range(len(y)):
for word in x:
cat_x_y.append(y[j]+word)
#remove duplicate in the cat_x_y:
cat_x_y = list(dict.fromkeys(cat_x_y))
#for each word in cat_x_y add the to text if they are in the dictionary
for word in cat_x_y:
if word in dic:
text.append(word)
#remove duplicate from text
text = list(dict.fromkeys(text))
print(text)
我假设您要检查来自x的单词和来自y的单词。 但也尝试添加x + y和y + x
这是我执行代码时得到的词:
['les', 'engage', 'président', 'de', 'la', 'république', 'sont', 'aussi', 'ceux', 'des', 'dirigeants', 'société', 'ferroviaire', 'a-t-il', 'soutenu', 'élus', 'du', 'réunis', 'à', 'le', 'droite', 'aux', 'côtés', 'patron', 'guillaume', 'gare', 'paris', 'juillet', 'der', 'irrita', 'par', 'fois', 'usa', 'face', 'trains', 'supprimés', 'dessertes', 'abandonnées', 'semble', 'avoir', 'saisi', 'devant', 'mardi', 'février', 'cadre', 'grand', 'débat', 'a', 'eu', 'mots', 'très', 'durs', 'contre', 'qui', 'fermé', 'ligne', 'décembre', 'alors', 'que', 'chef', 'était', 'engagé', 'durant', 'un', 'déplacement', 'dans', 'tué', 'en', 'avril', 'ce', 'elle', 'reste', 'opération', 'engagements', 'lavant', 'lamés', 'lacement', 'levant', 'irritation', 'usagers', 'avant', 'quenelle', 'cenelle', 'opérationnelle', 'préside', 'présides', 'présider', 'vantaux', 'vanta', 'mésusa', 'déplace', 'effectué']