gpt4 book ai didi

python - 法语文本上的 NLTK word_tokenize 无法正常工作

转载 作者:太空狗 更新时间:2023-10-30 02:54:03 26 4
gpt4 key购买 nike

我正在尝试使用 NLTK word_tokenizeFrench 中的文本使用:

txt = ["Le télétravail n'aura pas d'effet sur ma vie"]
print(word_tokenize(txt,language='french'))

它应该打印:

['Le', 'télétravail', 'n'','aura', 'pas', 'd'','effet', 'sur', 'ma', 'vie','.']

但是我得到:

['Le', 'télétravail', "n'aura", 'pas', "d'effet", 'sur', 'ma', 'vie','.']

有谁知道为什么在法语中不能正确拆分标记以及在用法语进行 NLP 时如何克服这个问题(以及其他潜在问题)?

最佳答案

查看 word_tokenize 的源代码显示,language 参数仅用于确定如何将输入拆分为句子。对于单词级别的标记化,使用了(略有修改的)TreebankWordTokenizer,它最适合english 输入和类似don't 的缩写。来自 nltk/tokenize/__init__.py:

_treebank_word_tokenizer = TreebankWordTokenizer()
# ... some modifications done
def word_tokenize(text, language='english', preserve_line=False):
# ...
sentences = [text] if preserve_line else sent_tokenize(text, language)
return [token for sent in sentences
for token in _treebank_word_tokenizer.tokenize(sent)]

要获得所需的输出,您可能需要考虑使用不同的分词器,例如 RegexpTokenizer,如下所示:

txt = "Le télétravail n'aura pas d'effet sur ma vie"
pattern = r"[dnl]['´`]|\w+|\$[\d\.]+|\S+"
tokenizer = RegexpTokenizer(pattern)
tokenizer.tokenize(txt)
# ['Le', 'télétravail', "n'", 'aura', 'pas', "d'", 'effet', 'sur', 'ma', 'vie']

我的法语知识有限,这只能解决所述问题。对于其他情况,您将不得不调整模式。您还可以查看 TreebankWordTokenizer 的实现,以了解更复杂的解决方案。另请记住,如果需要,您需要事先用这种方式拆分句子。

关于python - 法语文本上的 NLTK word_tokenize 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47372801/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com