Formulaire de contact

 

Segmentation des textes chinois
(épisode 2 -- Test, évaluation et discussions)




PLAN

IV TEST
V EVALUATION
VI CONCLUSION
REFERENCES

PREAMBULE

Dans le blog précédent, nous avons parlé du contexte, des enjeux, d’algorithmes et d’outils de la segmentation des textes chinois. Dans ce blog, nous continuerons les parties du test, de l’évaluation et des discussions.

IV TEST

Dans cette partie, nous présenterons le test outil par outil.

Le texte à tester (texte-test) sera précisé dans la Partie V Evaluation.

Environment de test

CPU

ThinkPad-T440p:~$ cat /proc/cpuinfo | grep 'name' | cut -f2 -d: | uniq
 Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz

GPU

ThinkPad-T440p:~$ lspci | grep -i 'vga' | cut -f3 -d:
 Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06)
 NVIDIA Corporation GK208M [GeForce GT 730M] (rev a1)


Mémoire

ThinkPad-T440p:~$ cat /proc/meminfo | grep -i "memtotal" | cut -f2 -d:
       16307404 kB


Système

ThinkPad-T440p:~$ uname -a
Linux ThinkPad-T440p 4.10.0-38-generic #42~16.04.1-Ubuntu SMP Tue Oct 10 16:32:20 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux


4.1 Stanford word segmenter

4.1.1 Préparation

Le système demande une version de Java supérieure à 6.

####Téléchargement (> 200Mo)
wget https://nlp.stanford.edu/software/stanford-segmenter-2017-06-09.zip | unzip

4.1.2 Test

avec lignes de commande

####Test
##Fichier d'entrée: chaque ligne comporte une phrase
##Préciser l'encodage obligatoire : nom du jeu de caractères connu par Java
##Option 0 : la meilleure hypothèse sans probabilités

####avec le modèle Chinese Penn Treebank standard (ctb)
./stanford-segmenter-2017-06-09/segment.sh ctb text_test UTF-8 0 > result_std_ctb
####avec le modèle Pekin University standard(pku)
./stanford-segmenter-2017-06-09/segment.sh pku text_test UTF-8 0 > result_std_pku

4.2 Jieba (bégayer)

Nous avons testé son module en python2.

4.2.1 Préparation


####Installation
pip install jieba

4.2.2 Test

test_jieba.py

# encoding: utf-8
#####test_jieba.py

import jieba

myFile = open("text_test", "r")

myResult = open("result_jieba", "w")
result = jieba.cut(myFile.read())
myResult.write("/".join(result).encode('utf-8'))

myFile.close()

4.3 NLPIR / ICTCLA

Nous avons testé son module en python2.

Note : Il faut renouveler manuellement le fichier d’authorisation chaque mois.


4.3.1 Préparation


####Installation
pip install pynlpir

4.4.2 Test

test_pynlpir.py

# encoding: utf-8
#####test_pynlpir.py
import pynlpir
pynlpir.open()

myFile = open("text_test", "r")
myResult = open("result_pynlpir", "w")

result = pynlpir.segment(myFile.read(), pos_tagging=False)
myResult.write("/".join(result).encode('utf-8'))

myFile.close()
myResult.close()


4.4 LTP (Language Technology Platform)

Nous avons testé son module en python2.

4.4.1 Préparation


##Téléchargement tout d'abord du modèle (> 600Mo)
wget http://ospm9rsnd.bkt.clouddn.com/model/ltp_data_v3.4.0.zip |unzip
####Installation

##Installer le wrapper de ltp en python
pip install pyltp

4.4.2 Test

test_ltp.py


# encoding: utf-8
#####test_ltp.py

import os
LTP_DATA_DIR = '/home/yizhou/NLPTools/ltp_data_v3.4.0'
cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model')

import pyltp
segmentor = pyltp.Segmentor()
segmentor.load(cws_model_path)

myFile = open("text_test", "r")
myResult = open("result_ltp", "w")

result = segmentor.segment(myFile.read())
myResult.write("/".join(result))

segmentor.release() 
myFile.close()
myResult.close()


4.5 THULAC (THU Lexical Analyzer for Chinese)

4.5.1 Préparation


####Installation
sudo pip install thulac

4.5.2 Test

test_thulac.py


# encoding: utf-8
#####test_thulac.py
import thulac

myFile = open("text_test", "r")
myResult = open("result_thulac", "w")

result = thulac.thulac(seg_only=True, deli='/')
result.cut_f("text_test", "result_thulac") 

myFile.close()
myResult.close()


4.6 KCWS (Deep learning Chinese word segment)

Malheuresement, nous ne sommes pas parvenus à entraîner notre modèle. Nous aurions utilisé le tensorflow avec GPU support au lieu de simple CPU support.

4.6.1 Préparation

Cela nécessite une grande installation : 1) bazel (outil de construire et test) ; 2) tensorflow (outil d’apprentissage automatique) ; 3) installer kcws ; et 4) le construire avec bazel

1) bazel


##Téléchargement de l'installeur binaire (> 124Mo)
wget https://github.com/bazelbuild/bazel/releases/download/0.4.5/bazel-0.4.5-installer-linux-x86_64.sh
#### Installer
chmod +x bazel-0.4.5-installer-linux-x86_64.sh
./bazel-0.4.5-installer-linux-x86_64.sh --user
####set environment
export PATH="$PATH:$HOME/bin"
export PATH="$PATH:~/.bashrc"


2) tensorflow

#https://www.tensorflow.org/install/install_linux
sudo apt-get install python-virtualenv
virtualenv --system-site-packages tensorflow
source ~/tensorflow/bin/activate
pip install --upgrade tensorflow

####chaque fois qu'on utilise tensorflow, il faut l'activer
$source ~/tensorflow/bin/activate
####il faut le désactiver après l'utilisation
(tensorflow)$ deactivate


3) kcws


git clone https://github.com/koth/kcws
cd kcws
./configue

4) installer le backend API avec bazel

bazel build kcws/cc:seg_backend_api


4.6.2 Test

Il faut demander le corpus annoté auprès de l’auteur et l’entraîner par soi-même.

Nous avons obtenu le corpus (basé sur le journal du peuple 2014, taille après être décompressé : 189Mo).


##nettoyer les etiquettes
~/NLPTools/kcws/train$ python process_anno_file.py ~/NLPData pre_chars_for_w2v.txt 
total:871371, long lines:82606

##Construire l'outil de word2vec
~/NLPTools/kcws$ bazel build third_party/word2vec:word2vec
## obtenir la liste de mots (préminaire)
~/NLPTools/kcws$ ./bazel-bin/third_party/word2vec/word2vec -train kcws/train/pre_chars_for_w2v.txt -save-vocab pre_vocab.txt -min-count 3
Starting training using file kcws/train/pre_chars_for_w2v.txt
Vocab size: 6073
Words in train file: 36923633

##traîter les mots peu fréquentss
~/NLPTools/kcws$ python kcws/train/replace_unk.py pre_vocab.txt kcws/train/pre_chars_for_w2v.txt chars_for_w2v.txt

##entraîner word2vec
~/NLPTools/kcws$ ./bazel-bin/third_party/word2vec/word2vec -train chars_for_w2v.txt -output vec.txt -size 50 -sample 1e-4 -negative 5 -hs 1 -binary 0 -iter 5
Starting training using file chars_for_w2v.txt
Vocab size: 5691
Words in train file: 36923908
Alpha: 0.000005  Progress: 100.00%  Words/thread/sec: 85.91k

##Construire l'outil d'entrainement
~/NLPTools/kcws$ bazel build kcws/train:generate_training

##transformer le texte de corpus en vectors et les annoter
~/NLPTools/kcws$ ./bazel-bin/kcws/train/generate_training vec.txt ~/NLPData all.txt
got dim:50
total:871371, long lines:79556, chars:26750593

##Préparer le corpus d'entrainement et le corpus de test (80% : 20%)
##obtenir train.txt (276Mo) et test.txt
~/NLPTools/kcws$ python kcws/train/filter_sentence.py all.txt

##entrainer le corpus et exporter le model au format pbtxt
## Le programme exécutait 4 heures et avait seulement fini une petite proportion du corpus d'entrainement (276 Mo)
## On l'a donc forcé à terminer.
~/NLPTools/kcws$ python kcws/train/train_cws.py --word2vec_path vec.txt --train_data_path ~/NLPTools/kcws/train.txt --test_data_path test.txt --max_sentence_len 80 --learning_rate 0.001

(tensorflow) :~/NLPTools/kcws$ python kcws/train/train_cws.py --word2vec_path vec.txt --train_data_path ~/NLPTools/kcws/train.txt --test_data_path test.txt --max_sentence_len 80 --learning_rate 0.001


Ce résultat temporaire montre que la précision de l'entraînement atteint à 95.7%. Il s'agissait d'une petite proportion du corpus d'entraînement, ce qui avait déjà utilisé 4 heures d'exécution. Nous l'avons forcé à terminer. 

4.7 SWCS (Simple Chinese word segmentation)

4.7.1 Préparation


####Installation
wget -q -O - http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2 | tar xjf -
sudo  ./configure --prefix=$HOME/NLPTools/scws
make
make install

###Téléchargement du dictionnaire
wget http://www.xunsearch.com/scws/down/scws-dict-chs-utf8.tar.bz2 -P $HOME/scws/etc
tar xvjf $HOME/scws/etc/scws-dict-chs-utf8.tar.bz2


4.7.2 Test


####TESTER
$HOME/scws/bin/scws -i ./text_test -c utf8 -o result_scws -d $HOME/scws/etc/dict.utf8.xdb


V EVALUATION

5.1 Méthodes

Nous aimerons évaluer des outils quantitativement. Il faut préciser l'échantillon, le golden standard et les critères de mesure.

5.1.1 Echantillon

Il faut choisir un échantillon pour tester tous les outils.

Notre corpus sont basés sur des données journalistiques. Nous avons donc extrait une partie d'un article de nos sources et éliminé toutes les signes de ponctuations. (Nous avons modifié la longueur dans la phase suivante.)

5.1.2 Golden standard

Pour évaluer un outil, il faut établir un standard d'or, qui est accepté par tout le monde. Normalement, il s'agit d'une segmentation manuelle.

Nous avons donc segmenté manuellement notre échantillon selon la "Contemporary Chinese language word segmentation specification for information processing".
Nous avons au total 200 segments (200 mots) pour faciliter notre calcul.


随着/人工智能/和/机器学习/的/发展/机器人/越来越多/地/承担/起/更加/重要/的/工作/如/外科手术/自动驾驶/战场/作战/甚至/能/决定/人类/的/生死/那么/我们/能/信赖/机器人/吗/
按/大众/对/机器人/的/理解/它们/要么/是/近乎/完美/的/忠诚/管家/要么/是/精神/变态/的/狡诈/杀手/就像/星球大战/里/的/c3po/机械/姬/里/的/艾娃/禁闭/行星/里/的/罗比/或/太空/漫游/里/的/哈尔/虽说/这些/描写/只不过/反映/了/人类/自己/的/希望/和/恐惧/但/至少/这些/恐惧/已/开始/进入/现实/
近年来/许多/科技界/名人/表达/了/他们/对/人工智能/横行/世界/的/忧虑/拥有/超级/智能/的/机器人/建立/了/一个/新世界/人类/不再/是/这个/新世界/里/的/主角/他们/被/奴役/杀戮/甚至/灭绝/这些/恐怖/场景/和/几十年/前/科幻/小说家/们/幻想/的/差别/不大/却/引起/了/人们/的/广泛/关注/甚至/包括/斯蒂芬/霍金/比尔/盖茨/埃隆/马斯克/等/科技/名人/
人类/和/机器/正/形成/一种/新的/关系/在/不久/的/将来/我们/会/开始/对/那些/具有/高度/自主性/完全/自动化/的/机器人/系统/委以重任/如/驾驶/汽车/执行/手术/甚至/在/战争/中/选择/何时/使用/致命性/


5.1.3 Critères de mesure

La Précision (P), le rappel (R) et la F-mesure (F) sont les 3 critères majeures pour évaluer la performance d'un système de recherche d'information. En même temps, on peut également calculer le taux d'erreurs (ER).

La précision compte la proportion d'items pertinents parmi les items sélectionnés ; le rappel compte la proportion d'items pertinents sélectionnés parmi tous les items pertinents sélectionnables.

La F-mesure est la moyenne harmonique de la précision et le rappel. La précision, le rappel et la f-mesure d'un segmenteur idéal sont égaux à 1, alors que le taux d'erreur vaut 0.

Pour mieux illustrer et calculer ces critères, définissons des variables suivantes :

N : nombre de mots du "golden standard", (dans notre cas, une variable constante qui vaut 200)
e : nombre de mots mal segmentés
c : nombre de mots correctement segmentés

Obtenons les formules infra :

    R = c / N
    P = c / (c + e)
    F = 2 x P x R / (P + R)
    ER = e / N

5.2 Résultats et discussions

Nous avons nettoyé et formatté des fichiers de sortie pour faciliter la comparaison.


Std(cpb)

随着/人工/智能/和/机器/学习/的/发展/机器人/越来越/多/地/承担/起/更加/重要/的/工作/如/外科/手术/自动/驾驶/战场/作战/甚至/能/决定/人类/的/生死/那么/我们/能/信赖/机器人/吗/
按/大众/对/机器人/的/理解/它们/要么/是/近乎/完美/的/忠诚/管家/要么/是/精神/变态/的/狡诈/杀手/就/像/星球/大战/里/的/c3po/机械/姬里/的/艾娃/禁闭/行星/里/的/罗比或/太空/漫游/里/的/哈尔/虽说/这些/描写/只/不过/反映/了/人类/自己/的/希望/和/恐惧/但/至少/这些/恐惧/已/开始/进入/现实/
近年/来/许多/科技界/名人/表达/了/他们/对/人工/智能/横行/世界/的/忧虑/拥有/超级/智能/的/机器人/建立/了/一/个/新/世界/人类/不再/是/这个/新/世界/里/的/主角/他们/被/奴役/杀戮/甚至/灭绝/这些/恐怖/场景/和/几十/年/前/科幻/小说/家们/幻想/的/差别/不/大/却/引起/了/人们/的/广泛/关注/甚至/包括/斯蒂芬/霍金/比尔盖茨/埃隆/马斯克/等/科技/名人/
人类/和/机器/正/形成/一/种/新/的/关系/在/不久/的/将来/我们/会/开始/对/那些/具有/高度/自主性/完全/自动化/的/机器人/系统/委以/重任/如/驾驶/汽车/执行/手术/甚至/在/战争/中/选择/何时/使用/致命性/武器

Std(pku)

随着/人工智能/和/机器/学习/的/发展/机器人/越来越/多/地/承担/起/更加/重要/的/工作/如/外科/手术/自动/驾驶/战场/作战/甚至/能/决定/人类/的/生死/那么/我们/能/信赖/机器人/吗/
按/大众/对/机器人/的/理解/它们/要么/是/近乎/完美/的/忠诚/管家/要么/是/精神/变态/的/狡诈/杀手/就/像/星球大战/里/的/c3po/机械/姬/里/的/艾/娃/禁闭/行星/里/的/罗/比/或/太空/漫游/里/的/哈尔/虽说/这些/描写/只不过/反映/了/人类/自己/的/希望/和/恐惧/但/至少/这些/恐惧/已/开始/进入/现实/
近年来/许多/科技界/名人/表达/了/他们/对/人工/智能/横行/世界/的/忧虑/拥有/超级/智能/的/机器人/建立/了/一个/新/世界/人类/不再/是/这个/新/世界/里/的/主角/他们/被/奴役/杀戮/甚至/灭绝/这些/恐怖/场景/和/几十/年/前/科幻小说家/们/幻想/的/差别/不大/却/引起/了/人们/的/广泛/关注/甚至/包括/斯蒂芬/霍/金/比尔盖茨/埃/隆/马斯克/等/科技/名人/
人类/和/机器/正形/成/一/种/新/的/关系/在/不久/的/将来/我们/会/开始/对/那些/具有/高度/自主性/完全/自动化/的/机器人/系统/委以重任/如/驾驶/汽车/执行/手术/甚至/在/战争/中/选择/何时/使用/致命性/武器

Jieba


随着/人工智能/和/机器/学习/的/发展/机器人/越来越/多/地/承担/起/更加/重要/的/工作/如/外科/手术/自动/驾驶/战场/作战/甚至/能/决定/人类/的/生死/那么/我们/能/信赖/机器人/吗/
按/大众/对/机器人/的/理解/它们/要么/是/近乎/完美/的/忠诚/管家/要么/是/精神/变态/的/狡诈/杀手/就/像/星球大战/里/的/c3po/机械/姬/里/的/艾/娃/禁闭/行星/里/的/罗/比/或/太空/漫游/里/的/哈尔/虽说/这些/描写/只不过/反映/了/人类/自己/的/希望/和/恐惧/但/至少/这些/恐惧/已/开始/进入/现实/
近年来/许多/科技界/名人/表达/了/他们/对/人工/智能/横行/世界/的/忧虑/拥有/超级/智能/的/机器人/建立/了/一个/新/世界/人类/不再/是/这个/新/世界/里/的/主角/他们/被/奴役/杀戮/甚至/灭绝/这些/恐怖/场景/和/几十/年/前/科幻小说家/们/幻想/的/差别/不大/却/引起/了/人们/的/广泛/关注/甚至/包括/斯蒂芬/霍/金/比尔盖茨/埃/隆/马斯克/等/科技/名人/
人类/和/机器/正形/成/一/种/新/的/关系/在/不久/的/将来/我们/会/开始/对/那些/具有/高度/自主性/完全/自动化/的/机器人/系统/委以重任/如/驾驶/汽车/执行/手术/甚至/在/战争/中/选择/何时/使用/致命性/武器


NLPIR / ICTCLA



随着/人工智能/和/机器/学习/的/发展/机器人/越来越/多/地/承担/起/更加/重要/的/工作/如/外科/手术/自动/驾驶/战场/作战/甚至/能/决定/人类/的/生死/那么/我们/能/信赖/机器人/吗/
按/大众/对/机器人/的/理解/它们/要么/是/近乎/完美/的/忠诚/管家/要么/是/精神/变态/的/狡诈/杀手/就/像/星球/大战/里/的/c3po/机械/姬/里/的/艾娃/禁闭/行星/里/的/罗/比/或/太空/漫游/里/的/哈尔/虽说/这些/描写/只不过/反映/了/人类/自己/的/希望/和/恐惧/但/至少/这些/恐惧/已/开始/进入/现实/
近年来/许多/科技界/名人/表达/了/他们/对/人工智能/横行/世界/的/忧虑/拥有/超级/智能/的/机器人/建立/了/一个/新/世界/人类/不再/是/这个/新/世界/里/的/主角/他们/被/奴役/杀戮/甚至/灭绝/这些/恐怖/场景/和/几十/年/前/科幻/小说/家/们/幻想/的/差别/不/大/却/引起/了/人们/的/广泛/关注/甚至/包括/斯蒂芬霍金比尔盖茨埃隆马斯克/等/科技/名人/
人类/和/机器/正/形成/一/种/新/的/关系/在/不久/的/将来/我们/会/开始/对/那些/具有/高度/自主性/完全/自动化/的/机器人/系统/委以重任/如/驾驶/汽车/执行/手术/甚至/在/战争/中/选择/何时/使用/致命/性



LTP (language technology platform)

随着/人工智能/和/机器/学习/的/发展/机器人/越来越/多/地/承担/起/更加/重要/的/工作/如/外科/手术/自动/驾驶/战场/作战/甚至/能/决定/人类/的/生死/那么/我们/能/信赖/机器人/吗/
按/大众/对/机器人/的/理解/它们/要么/是/近乎/完美/的/忠诚/管家/要么/是/精神/变态/的/狡诈/杀手/就/像/星球/大战/里/的/c3po/机械姬/里/的/艾娃/禁闭/行星/里/的/罗比/或/太空/漫游/里/的/哈尔/虽说/这些/描写/只不过/反映/了/人类/自己/的/希望/和/恐惧/但/至少/这些/恐惧/已/开始/进入/现实/
近年来/许多/科技界/名人/表达/了/他们/对/人工智能/横行/世界/的/忧虑/拥有/超级/智能/的/机器人/建立/了/一个/新/世界/人类/不再/是/这个/新/世界/里/的/主角/他们/被/奴役/杀戮/甚至/灭绝/这些/恐怖/场景/和/几十/年/前/科幻/小说家/们/幻想/的/差别/不/大/却/引起/了/人们/的/广泛/关注/甚至/包括/斯蒂芬/霍金/比尔盖茨埃隆马斯克/等/科技/名人/
人类/和/机器/正/形成/一/种/新/的/关系/在/不久/的/将来/我们/会/开始/对/那些/具有/高度/自主性/完全/自动化/的/机器人/系统/委以/重任/如/驾驶/汽车/执行/手术/甚至/在/战争/中/选择/何时/使用/致命性


THULAC (THU Lexical anlayzer for Chinese)

随着/人工智能/和/机器/学习/的/发展/机器人/越/来/越/多/地/承担/起/更加/重要/的/工作/如/外科/手术/自动/驾驶/战场/作战/甚至/能/决定/人类/的/生死那/么/我们/能/信赖/机器人/吗/
按/大众/对/机器人/的/理解/它们/要/么/是/近乎/完美/的/忠诚/管/家/要/么/是/精神/变态/的/狡诈/杀手/就/像/星球/大战/里/的/c3/p/o/机械姬/里/的/艾娃/禁/闭行星/里/的/罗/比/或/太空/漫游/里/的/哈/尔/虽说/这些/描写/只/不/过/反映/了/人类/自己/的/希望/和/恐惧/但/至少/这些/恐惧/已/开始/进入/现实/
近年/来/许多/科技界/名人/表达/了/他们/对/人工智能/横行/世界/的/忧虑/拥有/超级智能/的/机器人/建立/了/一个/新/世界/人类/不/再/是/这个/新/世界/里/的/主角/他们/被/奴役/杀戮/甚至/灭绝/这些/恐怖/场景/和/几十/年/前/科幻/小说/家/们/幻想/的/差别/不/大/却/引起/了/人们/的/广泛/关注/甚至/包括/斯蒂芬/霍金/比尔盖茨埃隆马斯克/等/科技/名人/
人类/和/机器/正/形成/一/种/新/的/关系/在/不/久/的/将/来/我们/会/开始/对/那些/具有/高度/自主性/完全/自动化/的/机器人/系统/委以重任/如/驾驶/汽车/执行/手术/甚至/在/战争/中/选择/何时/使用/致命性


SWCS (Simple Chinese word segmentation)


随着/人工智能/和/机器/学习/的/发展/机器人/越来/越多/地/承担/起/更加/重要/的/工作/如/外科/手术/自动/驾驶/战场/作战/甚至/能/决定/人类/的/生死/那么/我们/能/信赖/机器人/吗/
按/大众/对/机器人/的/理解/它们/要么/是/近乎/完美/的/忠诚/管家/要么/是/精神/变态/的/狡诈/杀手/就/像/星球大战/里/的/c3po/机械/姬/里/的/艾娃/禁闭/行星/里/的/罗比/或/太空/漫游/里/的/哈尔/虽说/这些/描写/只不过/反映/了/人类/自己/的/希望/和/恐惧/但/至少/这些/恐惧/已/开始/进入/现实/
近年来/许多/科技界/名人/表达/了/他们/对/人工智能/横行/世界/的/忧虑/拥有/超级/智能/的/机器人/建立/了/一个/新世界/人类/不再/是/这个/新世界/里/的/主角/他们/被/奴役/杀戮/甚至/灭绝/这些/恐怖/场景/和/几十/年前/科幻/小说家/们/幻想/的/差别/不大/却/引起/了/人们/的/广泛/关注/甚至/包括/斯蒂芬/霍金/比尔/盖茨/埃隆/马斯克/等/科技/名人/
人类/和/机器/正/形成/一/种/新/的/关系/在/不久/的/将来/我们/会/开始/对/那些/具有/高度/自主性/完全/自动化/的/机器人/系统/委以重任/如/驾驶/汽车/执行/手术/甚至/在/战争/中/选择/何时/使用/致命性/武器/


Diagramme de performance globale



Diagramme des taux d'erreurs



Selon les diagrammes supra, SCWS et Jieba sont les deux meilleurs outils. Mais après avoir comparé manuellement les résultats obtenus avec notre golden standard, et examiné les fonctionnalités des outils, nous avons constaté que notre système d’évaluation n’était pas tout à fait fiable, car

       1) les « information granules » sont différentes, c’est-à-dire que les outils ont un choix entre minimum matching et maximum matching (cf le blog précédant, partie algorithmes)

ex
中华人民共和国
pinyin : zhōng huá rén mín gòng hé guó
traduction fr : République populaire de Chine

segmentation 1
中华/人民/共和国
pinyin : zhōng huá/ rén míngòng hé guó
traduction littérale (mot-à-mot) : Chine / peuple / République

segmentation 2
On ne le segmente pas, on l’enregistre dans le dictionnaire.

L’exemple montre que des choix de « granule » provoquent des différences importantes, à savoir que la première segmentation a 3 tokens, tandis que la seconde en a 1 seul. Si l’on a manipulé un corpus de grande taille, cet écart serait significatif.

« granule » petite : std word segmenter
« granule » moyenne : ltp
« granule » modifiable : SCWS, Jieba, NLPIR

       2) Certains outils ont fait par défaut la reconnaissance des entités nommées(NER), mais d’autres non. Cela complique la statistique.

ex
比尔·盖茨
Bill Gates

En chinois, les noms des personnes occidentaux s’écrivent avec un · entre chaque partie. Certains outils ont regroupé ce nom comme un seul token, mais certains était plus prudents, ils ont spéraré des noms (dans cet exemple, en deux tokens : prénom / nom). Cela est lié aussi au choix de « granule ».

3) dictionnaire

Certains outils (ltp, swcs, nlpir, jieba, )permettent aux utilisateurs d’entrer des néologismes dans le dictionnaire. Il est logique qu’un dictionnaire exhaustif fonctionne beaucoup mieux, mais, n’oublions jamais le coût (temps, mémoire). Le choix serait le résultat d’un compromis entre ces critères.

CONCLUSION

Ce test des outils de manière rustique avait pour but d’en trouver un puissant pour notre projet. Mais, nous ne pouvons pas arbitrairement évaluer ou choisir tel ou tel outil sans le mettre en pratique. Il convient de prendre en compte toutes les contraintes de notre travail.

Bibliographies et Références

孙茂松王洪君李行健富丽黄昌宁陈松岑, ... & 张卫国. (2001). 信息处理用现代汉语分词词表语言文字应用, 4, 84-89. (The Guideline of constructinga wordlist of Contemporary Chinese for information processing )  
刘源谭强, & 沈旭昆. (1994). 信息处理用现代汉语分词规范及自动分词方法清华大学出版社. (Contemporary Chinese language wordsegmentation specification for information processing and methods of automaticsegmentation)   
龙树全赵正文, & 唐华. (2009). 中文分词算法概述电脑知识与技术学术交流, 5(4), 2605-2607. (Brief review on Chinese segmentation algorithms)

Huihsin Tseng, Pichuan Chang, Galen Andrew, Daniel Jurafsky and Christopher Manning. 2005. A Conditional Random Field Word Segmenter. In Fourth SIGHAN Workshop on Chinese Language Processing.
Maosong Sun, Xinxiong Chen, Kaixu Zhang, Zhipeng Guo, Zhiyuan Liu. THULAC: An Efficient Lexical Analyzer for Chinese. 2016.
Zhongguo Li, Maosong Sun. Punctuation as Implicit Annotations for Chinese Word Segmentation. Computational Linguistics, vol. 35, no. 4, pp. 505-512, 2009.
Mysore, S., Kim, E., Strubell, E., Liu, A., Chang, H. S., Kompella, S., ... & Olivetti, E. (2017). Automatically Extracting Action Graphs from Materials Science Synthesis Procedures. arXiv preprint arXiv:1711.06872.
Lample, G., Ballesteros, M., Subramanian, S., Kawakami, K., & Dyer, C. (2016). Neural architectures for named entity recognition. arXiv preprint arXiv:1603.01360.




Total comment

Auteurs

AI_PLURITAL
Un épisode sur 
la segmentation des textes chinois (ep 1)




PLAN

INTRODUCTION
I CONTEXTE
II ALGORITHMES
III OUTILS
IV TEST
V EVALUATION
CONCLUSION
REFERENCES

INTRODUCTION

La segmentation de textes chinois joue un rôle important dans le traitement automatique de la langue chinoise. Dans notre projet, il est indispensable d’obtenir un « bon » corpus pour la suite de notre analyse. Il faut éviter le « garbage in, garbage out ». Nous avons donc envisagé de trouver un segmenteur puissant. Dans ce blog, nous commencerons par le contexte et les enjeux de la segmentation. Ensuite nous présenterons brièvement des algorithmes, et des outils existants pour tester et évaluer.

I CONTEXTE

Dans les langues telles que l'anglais ou le français, les mots sont généralement séparés par des espaces, ce qui simplifie la segmentation des phrases. Cependant, en chinois, la langue écrite est composée de caractères qui ne sont pas délimités, ce qui rend la symbolisation des mots difficile. Un caractère donné représente une signification indépendante en tant que mot, et une signification distincte lorsqu'il est groupé avec d'autres caractères ; il peut aussi avoir plusieurs sens ou prononciations.

Pour ceux ou celles qui maîtrisent bien le chinois, il est facile à saisir les nuances. Pour la machine, cela nécessite des désambiguïsations. Il existe plusieurs types d'ambiguïtés, tels que combinatoire, superposé, polysémique, ou ceux liés au ton, à la pause, etc. Chacun d'entre eux pose des difficultés sur des niveaux différents : segmentation, analyse morphosyntaxique, syntaxique, sémantique, pragmatique, etc.

ex 1

chinois : 今天天真热
pinyin : jīn tiān tiān zhēn rè
traduction fr : aujourd'hui, il fait vraiment chaud.

segmentation 1
*今天/天真/
pinyin : jīn tiān/ tiān zhēn/ rè
traduction littérale (mot-à-mot) : aujourd'hui/ naïf/ chaud

segmentation 2
今天///
pinyin : jīn tiān/ tiān/ zhēn/ rè
traduction littérale (mot-à-mot) : aujourd'hui/ temps/ vraiment/ chaud

Dans la langue naturelle, il n’y a pas d’ambiguïté quand on segmente天真 (tiān zhēn), seul la seconde segmentation est acceptable dans cette phrase, mais elle pose des problèmes pour la machine.

ex 2

南京市长江大桥
pinyin : nán jīng shì cháng jiāng dà qiáo
traduction fr :Le grand pont de Nankin sur le Yangtsé (le Fleuve bleu)

segmentation 1
南京/长江/大桥
pinyin : nán jīng shì /cháng jiāng /dà qiáo
traduction littérale (mot-à-mot) : Ville de Nankin/ le Yangtsé/ grand pont

segmentation 2
南京/市长/江大桥
pinyin : nán jīng /shì zhǎng/ jiāng dà qiáo
traduction littérale (mot-à-mot) : Nankin/ maire/ JIANG Daqiao (Nom de personne)
traduction fr : Le maire de Nankin, JIANG Daqiao

Dans la langue naturelle, si le maire de Nankin s’appelle JIANG Daqiao, cela va poser une ambiguïté. Les deux segmentations sont donc acceptables.
Le caractère "" a deux prononciations : cháng, zhǎng. Il peut être un mot et sa prononciation varie selon le contexte ; il peut aussi se combiner avec d'autres caractères pour former de nouveaux mots.

Les deux exemples supra, montrent, à un certain degré, la difficulté de la segmentation des textes chinois. Certaines ambiguïtés sont intrinsèques de la langue chinoise, tandis que d'autres sont liées à la limite de la machine. Il faut distinguer les deux types pour que le traitement soit efficace, c'est-à-dire que la machine peut "ignorer" des ambiguïtés intrinsèques lors de la segmentation, et reprendre ces problèmes dans les phases suivantes (analyses syntaxique, sémantique ou pragmatique).

La bonne segmentation est la base du traitement automatique du chinois (moteur de recherche, traduction automatique, synthèse de paroles, classification automatique de textes, etc). Pour ce faire, des spécialistes linguistiques/ informatiques du chinois ont établi des directives (guideline), notamment la "Contemporary Chinese language word segmentation specification for information processing". Des institutions ont en devloppé des jeux d'étiquettes et des corpus étiquetés, les plus connus sont celui de l'Université de Pennsylvania et celui de l'Université de Pékin.

II ALGORITHMES

Il existe en général 3 catégories d'algorithmes dans ce domaine.

2.1 String searching algorithm

Noyaux : dictionnaire, matching order (normal, renversé, bidirectionnel), matching principle (maximum matching, minimum matching, optimal match, etc.)
Avantages : facile à mettre en pratique
Désavantages :
1) coûteux (temps et mémoire) ;
2) ambiguïtés combinatoire et superposé ;
3) pas de standard des mots ;
4) peu puissant pour les néologismes ou les non-entrées de dictionnaire.

2.2 Algorithmes basés sur les connaissances/ l'intelligence artificielle

Ces algorithmes font l'analyses syntaxique et sémantique lors de la segmentation en simulant le processus de compréhension d'une phrase par un être-humain. Ils utilisent beaucoup de connaissances et d'informations linguistiques pour désambiguïser. Il existe notamment trois types :
   
       système expert
       réseau neuronal artificiel
la combinaison des deux supra

Désavantages : les connaissances et les informations de la langue chinoise sont trop compliquées pour être lisibles pour la machine.
   
2.3 Algorithmes basés sur la statistique

N-gram, principe d'entropie maximale et modèle de Markov caché sont des modèles souvent utilisés dans ce domaine.
Dans la pratique, on combine l'algorithme statistique et celui qui utilise des dictionnaires.

III OUTILS

Aucun outil n'utilise qu'un seul algorithme. Dans notre travail, il serait plus efficace et intéressant de comparer quelques outils de segmentation.



Nous avons fini le test et l’évaluation de ces outils, mais pas encore écrit les parties correspondantes. Elles seront dans le prochain blog.

Bibliographies et Références
compléter dans le prochain blog)

孙茂松, 王洪君, 李行健, 富丽, 黄昌宁, 陈松岑, ... & 张卫国. (2001). 信息处理用现代汉语分词词表. 语言文字应用, 4, 84-89. (The Guideline of constructinga wordlist of Contemporary Chinese for information processing )  
刘源, 谭强, & 沈旭昆. (1994). 信息处理用现代汉语分词规范及自动分词方法. 清华大学出版社. (Contemporary Chinese language wordsegmentation specification for information processing and methods of automaticsegmentation)   
龙树全, 赵正文, & 唐华. (2009). 中文分词算法概述. 电脑知识与技术: 学术交流, 5(4), 2605-2607. (Brief review on Chinese segmentation algorithms)

Huihsin Tseng, Pichuan Chang, Galen Andrew, Daniel Jurafsky and Christopher Manning. 2005. A Conditional Random Field Word Segmenter. In Fourth SIGHAN Workshop on Chinese Language Processing.
Maosong Sun, Xinxiong Chen, Kaixu Zhang, Zhipeng Guo, Zhiyuan Liu. THULAC: An Efficient Lexical Analyzer for Chinese. 2016.
Zhongguo Li, Maosong Sun. Punctuation as Implicit Annotations for Chinese Word Segmentation. Computational Linguistics, vol. 35, no. 4, pp. 505-512, 2009.
Mysore, S., Kim, E., Strubell, E., Liu, A., Chang, H. S., Kompella, S., ... & Olivetti, E. (2017). Automatically Extracting Action Graphs from Materials Science Synthesis Procedures. arXiv preprint arXiv:1711.06872.
Lample, G., Ballesteros, M., Subramanian, S., Kawakami, K., & Dyer, C. (2016). Neural architectures for named entity recognition. arXiv preprint arXiv:1603.01360.


Total comment

Auteurs

AI_PLURITAL