提取包含法语单词“mais”的句子时,返回不包含该单词的句子

2024-09-27 21:27:51 发布

您现在位置:Python中文网/ 问答频道 /正文

早上好

我试图从文件中提取包含单词“mais”的句子,我遇到的问题是,提取的句子根本不包含“mais”,但有时包含“jamais”。你知道为什么吗?我举一个小例子来说明我的问题

发现如下:我写的脚本使用spacy作为句子的标记,所以我只演示了一小部分。这些行跟随读取文件并将其放入列表的行。然后我在列表中循环查找包含“mais”的elt

    sentences_list_num = ['je ne suis pas mauvais mais lourd','je ne suis pas gentil', 'ce n\'est pas 
    plus laid', 'ce ne sera jamais bordelique']

    # Importing sentences which contains "mais"  ; result  :7477 sentences
    #word = 'mais'
    for sent in sentences_list_num:
      if 'mais' in sent:
        sentences_with_word_mais.append(sent)
      else :
        sentences_no_mais.append(sent)

    print(sentences_with_word_mais)


打印返回两句话,而这只是一句话:

['je ne suis pas mauvais mais lourd', 'ce ne sera jamais bordelique'] # Jamais is not mais ???

由于我有一个巨大的文件,我从一开始就没有注意到这个错误,但是当我尝试插入另一个代码行时,我发现了这个错误

我也用了“for”,但它仍然给我同样的错误


Tags: 文件列表错误sentencespaslist句子word
1条回答
网友
1楼 · 发布于 2024-09-27 21:27:51

字符串匹配不考虑单词边界。因此,根据Python,“mais”在“mais”和“jamais”中。您需要以某种方式指定“mais”必须是它自己的词。您可以使用正则表达式:

for sent in sentences_list_num:
  if len(re.findall(r'\Wmais\W', sent)) > 0:
    sentences_with_word_mais.append(sent)
  else:
    sentences_no_mais.append(sent)

如果您已经在使用spacy进行标记化,您也可以在每个句子中迭代标记并查找“MAI”

相关问题 更多 >

    热门问题