2017-09-27 2 views
1

Si j'ai une liste de mots chinois: comme référence = ['我', '是', '好', '人'] , Hypothèse = ['我', '是', '善良 的', '人]. Pourrais-je utiliser le: nltk.translate.bleu_score.sentence_bleu (références, hypothèses) pour la traduction en chinois? c'est la même chose que l'anglais? Que diriez-vous du japonais? Je veux dire si j'ai une liste de mots (chinois et japonais) comme l'anglais. Merci!BLEU scores: pourrais-je utiliser nltk.translate.bleu_score.sentence_bleu pour calculer les scores de bleu en chinois

+0

Pourquoi ne pas l'avoir essayé par vous-même? = ( – alvas

Répondre

1

TL; DR

Oui;


à Long

mesure score BLEU n-grammes et son agnostique aux langues, mais sa charge sur le fait que les peines linguistiques peuvent être divisés en jetons. Alors oui, il peut comparer chinois/japonais ...

Notez les mises en garde de l'utilisation du score BLEU au niveau de la phrase. BLEU n'a jamais été créé avec une comparaison de niveau de phrase à l'esprit, voici une bonne discussion: https://github.com/nltk/nltk/issues/1838

Très probablement, vous verrez l'avertissement lorsque vous avez des phrases vraiment courtes, par ex.

>>> from nltk.translate import bleu 
>>> ref = '我 是 好 人'.split() 
>>> hyp = '我 是 善良的 人'.split() 
>>> bleu([ref], hyp) 
/usr/local/lib/python2.7/site-packages/nltk/translate/bleu_score.py:490: UserWarning: 
Corpus/Sentence contains 0 counts of 3-gram overlaps. 
BLEU scores might be undesirable; use SmoothingFunction(). 
    warnings.warn(_msg) 
0.7071067811865475 

Vous pouvez utiliser les fonctions de lissage dans https://github.com/alvations/nltk/blob/develop/nltk/translate/bleu_score.py#L425 pour surmonter des phrases courtes.

>>> from nltk.translate.bleu_score import SmoothingFunction 
>>> smoothie = SmoothingFunction().method4 
>>> bleu([ref], hyp, smoothing_function=smoothie) 
0.2866227639866161 
+0

merci @ alvas vous êtes si gentil! Basé sur votre réponse, le corpus_bleu est le même. – tktktk0711