提取包含法语单词 "mais "的句子,返回不包含该词的句子。

问题描述 投票:-1回答:1

早晨好

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

请看下面的例子:我写的脚本使用了空格来标记句子,所以我只是举了一小部分。这些行跟在读取文件的行后面,并将其放入一个列表中,然后我在列表中循环找到包含 "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)


打印返回2句话,而它只是一句话。

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

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

我也使用了 "for",但它仍然给我同样的错误。

python python-3.x list list-comprehension dictionary-comprehension
1个回答
3
投票

字符串匹配没有考虑到词的边界。所以,根据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来标记,你也可以在每个句子中迭代标记,寻找 "mais"。

© www.soinside.com 2019 - 2024. All rights reserved.