Heim >Backend-Entwicklung >Python-Tutorial >Ausführliche Erläuterung von Anwendungsbeispielen für die Segmentierung chinesischer Jieba-Wörter
Die chinesische Textklassifizierung ist nicht wie die englische Textklassifizierung, bei der nur Wörter einzeln getrennt werden müssen. Bei der chinesischen Textklassifizierung müssen Wörter, die aus Text bestehen, getrennt werden, um Vektoren zu bilden. Daher ist eine Wortsegmentierung erforderlich.
Hier verwenden wir Jieba, ein beliebtes Open-Source-Wortsegmentierungstool. Es kann die Wörter im Satz effektiv einzeln extrahieren. Der Schlüssel zur Verwendung liegt hier nicht Es.
1. Installation
Stotternde Wortsegmentierung ist eine Python-Tool-Funktionsbibliothek. Die Installationsmethode ist wie folgt:
(1) Unter python2.x
Vollautomatische Installation: easy_install jieba oder pip install jieba
Halbautomatische Installation: zuerst herunterladen, entpacken und dann python setup.py install ausführen
Manuelle Installation: Platzieren Sie das jieba-Verzeichnis im aktuellen Verzeichnis oder auf der aktuellen Site. Paketverzeichnis
über import jieba Quote
(2) Unter python3.x
Derzeit unterstützt der Master-Zweig nur Python2.x
Die Python3.x-Version des Zweigs ist grundsätzlich auch verfügbar:
git clone git checkout jieba3k python setup.py install
2. Verwendung
Wenn Sie es verwenden, müssen Sie zuerst den Import-Jieba-Code verwenden, um die Jieba-Bibliothek zu importieren, da der chinesische Text möglicherweise zusätzlich zum Textinhalt einige Symbole enthält B. Klammern, Gleichheitszeichen oder Pfeile, müssen Sie diese auch über reguläre Ausdrücke importieren.
Da reguläre Ausdrücke verwendet werden, ist import re auch zum Importieren verwandter Funktionsbibliotheken erforderlich.
Der spezifische Code lautet wie folgt:
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]
Die Funktion textParse empfängt einen Satz (Satz) als Parameter und das Rückgabeergebnis ist ein Array aus Satzwörtern.
Die kritischste Funktion bei der Segmentierung stotternder Wörter ist jieba.cut. Diese Funktion teilt den empfangenen Satz in Wörter auf und gibt einen Generator zur Iteration zurück. Die letzte Codezeile wandelt diese Struktur in ein Array um.
3. Stoppwörter
Stoppwörter beziehen sich auf einige Modalpartikel oder Konnektive, die im Chinesischen vorkommen. Wenn diese Wörter nicht entfernt werden, wirken sie sich auf die Kernwörter und die Klassifizierung aus Beziehung. Zum Beispiel „von“, „von“, „und“, „und“ usw. Sie können bei Bedarf auch Stoppwörter hinzufügen, die für dieses Klassifizierungsszenario geeignet sind. Die chinesische Stoppwortliste umfasst 1598 Stoppwörter. Es kann von Github bezogen werden.
Die Projektverbesserungen sind wie folgt:
(1) Erstellen Sie eine neue Stoppschlüsselwortliste stopkey.txt im Projekt
Fügen Sie alle chinesischen Stoppwörter in diese Textdatei ein.
(2) Filter-Stoppwortfunktion beim Segmentieren chinesischer Wörter hinzufügen
4. Benutzerdefiniertes Wörterbuch
Passen Sie für Klassifizierungsszenarien einige häufig verwendete Wörter an. Behandeln Sie diese Wörter als einzelne Wörter. Durch Hinzufügen von „viele zu viele“ in der Datenbank zum Wörterbuch kann beispielsweise vermieden werden, dass die oben genannten Wörter während der Wortsegmentierung in „viele“, „Paar“ und „viele“ unterteilt werden. Die Definitionen dieser Wörterbücher beziehen sich auch auf die Anwendungsszenarien des Klassifikators.
Die Projektverbesserungen sind wie folgt:
(1) Fügen Sie eine benutzerdefinierte Wörterbuchdatei userdict.txt hinzu
(2) Fügen Sie eine benutzerdefinierte Wörterbuch-Wortsegmentierungsfunktion zur chinesischen Wortsegmentierung hinzu
5. Der Code der chinesischen Wortsegmentierungsfunktion
lautet wie folgt (weitere gängige Symbole wurden ebenfalls hinzugefügt):
#中文分词 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
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung von Anwendungsbeispielen für die Segmentierung chinesischer Jieba-Wörter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!