La classification des textes chinois n'est pas comme la classification des textes anglais qui doit uniquement séparer les mots un par un. La classification des textes chinois doit séparer les mots composés de texte pour former des vecteurs. Une segmentation des mots est donc nécessaire.
Ici, nous utilisons jieba, un outil de segmentation de mots open source populaire sur Internet. Il peut extraire efficacement les mots de la phrase un par un. Le principe de la segmentation jieba ne sera pas décrit ici. il.
1. Installation
La segmentation des mots bégayants est une bibliothèque de fonctions d'outils Python. Elle est installée dans l'environnement python :
(1) Sous python2.x.
Installation entièrement automatique : easy_install jieba ou pip install jieba
Installation semi-automatique : téléchargez d'abord, décompressez puis exécutez python setup.py install
Installation manuelle : placez le répertoire jieba dans le répertoire ou le site actuel- répertoire des packages
via import jieba Quote
(2) Sous python3.x
Actuellement, la branche master ne prend en charge que Python2.x
La version Python3.x de la branche est également disponible en principe :
git clone git checkout jieba3k python setup.py install
2. Utilisez
Lorsque vous l'utilisez, vous devez d'abord utiliser le code d'importation jieba pour importer la bibliothèque jieba puisque le texte chinois peut avoir des symboles en plus du contenu du texte. , comme les crochets, les signes égal ou les flèches, vous devez également les importer. Ceux-ci sont mis en correspondance et supprimés via des expressions régulières
Étant donné que des expressions régulières sont utilisées, import re est également nécessaire pour importer les bibliothèques de fonctions associées.
Le code spécifique est le suivant :
def textParse(sentence): import jieba import re #以下两行过滤出中文及字符串以外的其他符号 r= re.compile("[\s+\.\!\/_,$%^*(+\"\']+|[+——!,。?、~@#¥%……&*()]+") sentence=r.sub('',sentence) seg_list = jieba.cut(sentence) #print ("Default Mode:", ' '.join(seg_list)) return [tok for tok in seg_list]
La fonction textParse reçoit une phrase (phrase) en tant que paramètre, et le résultat renvoyé est un tableau composé de mots de phrase.
La fonction la plus critique dans la segmentation des mots bégayants est jieba.cut. Cette fonction divise la phrase reçue en mots et renvoie un générateur pour l'itération. La dernière ligne de code convertit cette structure en tableau.
3. Mots vides
Les mots vides font référence à certaines particules modales ou connecteurs qui apparaissent en chinois. Si ces mots ne sont pas supprimés, ils affecteront les mots principaux et la classification. relation claire. Par exemple, « de », « de », « et », « et », etc. Vous pouvez également ajouter des mots vides adaptés à ce scénario de classification, le cas échéant. La liste des mots vides chinois couvre 1 598 mots vides. Il peut être obtenu sur github.
Les améliorations du projet sont les suivantes :
(1) Créez une nouvelle liste de mots vides stopkey.txt dans le projet
Mettez tous les mots vides chinois dans ce fichier texte.
(2) Ajoutez une fonction de filtre de mots vides lors de la segmentation de mots chinois
4. Dictionnaire personnalisé
Pour les scénarios de classification, personnalisez certains mots courants, traitez ces mots. comme des mots simples. Par exemple, l'ajout de « plusieurs à plusieurs » dans la base de données du dictionnaire peut éviter de diviser les mots ci-dessus en « plusieurs », « paire » et « plusieurs » lors de la segmentation des mots. Les définitions de ces dictionnaires sont également liées aux scénarios d'application du classificateur.
Les améliorations du projet sont les suivantes :
(1) Ajouter un fichier de dictionnaire personnalisé userdict.txt
(2) Ajouter une fonction de segmentation de mots de dictionnaire personnalisée à la segmentation de mots chinois
5. Amélioration de la fonction de segmentation des mots chinois
Le code est le suivant (d'autres symboles courants sont également ajoutés) :
#中文分词 def textParse(sentence): import jieba import re #以下两行过滤出中文及字符串以外的其他符号 r= re.compile("[\s+\.\!\/_\?【】\-(?:\))(?:\()(?:\[)(?:\])(\:):,$%^*(+\"\']+|[+——!,。?、~@#¥%……&*()]+") sentence=r.sub('',sentence) jieba.load_userdict("userdict.txt");#加载自定义词典 stoplist={}.fromkeys([line.strip() for line in open("stopkey.txt",'r',encoding= 'utf-8')])#停用词文件是utf8编码 seg_list = jieba.cut(sentence) seg_list=[word for word in list(seg_list) if word not in stoplist] #print ("Default Mode:", ' '.join(seg_list)) return seg_list
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!