在python中的Nltk法语标记器无法正常工作

Ati*_*rag 6 python tokenize nltk

为什么python附带的法语标记器不能为我工作?难道我做错了什么?

我正在做

import nltk
content_french = ["Les astronomes amateurs jouent également un rôle important en recherche; les plus sérieux participant couramment au suivi d'étoiles variables, à la découverte de nouveaux astéroïdes et de nouvelles comètes, etc.", 'Séquence vidéo.', "John Richard Bond explique le rôle de l'astronomie."]
tokenizer = nltk.data.load('tokenizers/punkt/PY3/french.pickle')
for i in content_french:
        print(i)
        print(tokenizer.tokenize(i))
Run Code Online (Sandbox Code Playgroud)

但我得到非标记化输出

John Richard Bond explique le rôle de l'astronomie.
["John Richard Bond explique le rôle de l'astronomie."]
Run Code Online (Sandbox Code Playgroud)

Yoh*_*tom 9

tokenizer.tokenize()是句子标记器(splitter).如果要标记单词,请使用word_tokenize():

import nltk
from nltk.tokenize import word_tokenize

content_french = ["Les astronomes amateurs jouent également un rôle important en recherche; les plus sérieux participant couramment au suivi d'étoiles variables, à la découverte de nouveaux astéroïdes et de nouvelles comètes, etc.", 'Séquence vidéo.', "John Richard Bond explique le rôle de l'astronomie."]
for i in content_french:
        print(i)
        print(word_tokenize(i, language='french'))
Run Code Online (Sandbox Code Playgroud)

参考


J. *_*Doe 6

此 Tokenizer 的问题在于它不是法语句子的有效标记器:

from nltk.tokenize import word_tokenize
content_french = ("John Richard Bond explique le rôle de l'astronomie.")
word_tokenize(content_french, language='french')
>> ['John', 'Richard', 'Bond', 'explique', 'le', 'rôle', 'de', "l'astronomie", '.']
Run Code Online (Sandbox Code Playgroud)

"l'astronomie"应标记为["l'", 'astronomie'].

您可以使用 构建更好的标记器RegexpTokenizer,如下所示:

from nltk import RegexpTokenizer
toknizer = RegexpTokenizer(r'''\w'|\w+|[^\w\s]''')
toknizer.tokenize(content_french)
>> ['John', 'Richard', 'Bond', ...,"l'", 'astronomie', '.']
Run Code Online (Sandbox Code Playgroud)