Cours 9 - méthode 2 de de la segmentation du chinois

N.B. Les explications de chaque commande ou de chaque bloc de codes sont données dans les commentaires.

Segmentation du corpus chinois

Pour la segmentation du corpus chinois, nous avions précédemment utilisé le stanford-segmenter. Pour comparer sa performance avec un module Python Jieba spécialisé dans la segmentation du texte chinois, nous avons écrit un script python en important ce dernier module.

#!/usr/bin/python
# _*_ coding: utf-8 _*_

# segment chinese text
# modules
import re
import sys
import jieba

# functions
def tokenize(file):
    # input file
    with open(file, 'r', encoding='utf-8') as f:
        content = f.read()
        # clean text and keep only chinese characters
        pattern=re.compile(u'[^\u4E00-\u9FA5]')
        texte=pattern.sub(r'', content)
        wordlist_temp=list(jieba.cut(texte, cut_all=False))
        wordlist=[i.rstrip() for i in wordlist_temp if len(i)>=1]
    return wordlist

def token_file(file):
    wordlist=tokenize(sys.argv[1])
    # output file
    with open(file, 'w', encoding='utf-8') as f:
        f.write(' '.join(wordlist))

if __name__ == "__main__":
    token_file(sys.argv[2])

Il suffit de taper le nom du fichier contenant des textes chinois comme le premier argument et le nom du fichier de sortie comme le deuxième argument.

python3.7 seg_jieba.py ../DUMP-TEXT/1-16.txt test1.txt

Jieba vs. Stanford-Segmenter

Nous avons ensuite fait un test en prenant un de nos dump textes comme l’input avec les segmenteurs Jieba et Stanford-Segmenter. Les résultats sont affichés ci-après. Le résultat de Jieba s’affiche en haut tandis que celui de Stanford se trouve en bas.

Nous pouvons remarquer que le résultat de Jieba est plus satisfasant et se conforme aux habitudes chinoises. Sa reconnaissance des entités nommées, entre autres, a montré une haute précision.

Nous avons donc décidé d’utiliser notre script Jieba pour la segmentation du corpus chinois dans notre programme final.

article précédent
article suivant