LAC, der vollständige Name von Lexical Analysis of Chinese, ist ein gemeinsames lexikalisches Analysetool, das von der Abteilung für natürliche Sprachverarbeitung von Baidu entwickelt wurde, um Funktionen wie chinesische Wortsegmentierung, Wortartkennzeichnung und Eigennamenerkennung zu realisieren. Dieses Tool bietet die folgenden Funktionen und Vorteile:
Hier stellen wir hauptsächlich die Installation und Verwendung von Python sowie die Verwendung anderer Sprachen vor:
Code kompatibel mit Python2/3
Vollautomatische Installation: pip install lac
Halbautomatischer Download: Zuerst http://pypi.python.org/pypi/lac/ herunterladen, dekomprimieren und python setup.py install
ausführen
Nachdem die Installation abgeschlossen ist, können Sie in der Befehlszeile lac
oder lac --segonly
oder lac --rank
eingeben, um den Dienst für eine schnelle Erfahrung zu starten.
Inländische Netzwerke können die Baidu-Quellinstallation verwenden, die Installationsgeschwindigkeit ist schneller:
pip install lac -i https://mirror.baidu.com/pypi/simple
from LAC import LAC
# 装载分词模型
lac = LAC ( mode = 'seg' )
# 单个样本输入,输入为Unicode编码的字符串
text = u"LAC是个优秀的分词工具"
seg_result = lac . run ( text )
# 批量样本输入, 输入为多个句子组成的list,平均速率会更快
texts = [ u"LAC是个优秀的分词工具" , u"百度是一家高科技公司" ]
seg_result = lac . run ( texts )
【单样本】:seg_result = [LAC, 是, 个, 优秀, 的, 分词, 工具]
【批量样本】:seg_result = [[LAC, 是, 个, 优秀, 的, 分词, 工具], [百度, 是, 一家, 高科技, 公司]]
from LAC import LAC
# 装载LAC模型
lac = LAC ( mode = 'lac' )
# 单个样本输入,输入为Unicode编码的字符串
text = u"LAC是个优秀的分词工具"
lac_result = lac . run ( text )
# 批量样本输入, 输入为多个句子组成的list,平均速率更快
texts = [ u"LAC是个优秀的分词工具" , u"百度是一家高科技公司" ]
lac_result = lac . run ( texts )
Die Ausgabe jedes Satzes ist sein Wortsegmentierungsergebnis Wortliste und die Tags_Liste jedes Wortes, deren Format (Wortliste, Tags_Liste) ist.
【单样本】: lac_result = ([百度, 是, 一家, 高科技, 公司], [ORG, v, m, n, n])
【批量样本】:lac_result = [
([百度, 是, 一家, 高科技, 公司], [ORG, v, m, n, n]),
([LAC, 是, 个, 优秀, 的, 分词, 工具], [nz, v, q, a, u, n, n])
]
Der Satz der Kategorien-Tags für Wortarten und Eigennamen sieht wie folgt aus, wobei wir die vier am häufigsten verwendeten Eigennamenkategorien in Großbuchstaben markieren:
Etikett | Bedeutung | Etikett | Bedeutung | Etikett | Bedeutung | Etikett | Bedeutung |
---|---|---|---|---|---|---|---|
N | Gattungsname | F | Standort Substantiv | S | Ort Substantiv | jetzt | Titel der Arbeit |
nz | Andere Eigennamen | v | gebräuchliches Verb | vd | Verb Adverb | vn | Substantiv Verb |
A | Adjektiv | Anzeige | Adverb | ein | Substantiv | D | Adverb |
M | Quantor | Q | Quantor | R | Pronomen | P | Präposition |
C | Verbindung | u | Teilchen | xc | Andere Funktionswörter | w | Interpunktion |
PRO | Name | LOC | Ortsname | ORG | Name der Organisation | ZEIT | Zeit |
from LAC import LAC
# 装载词语重要性模型
lac = LAC ( mode = 'rank' )
# 单个样本输入,输入为Unicode编码的字符串
text = u"LAC是个优秀的分词工具"
rank_result = lac . run ( text )
# 批量样本输入, 输入为多个句子组成的list,平均速率会更快
texts = [ u"LAC是个优秀的分词工具" , u"百度是一家高科技公司" ]
rank_result = lac . run ( texts )
【单样本】:rank_result = [['LAC', '是', '个', '优秀', '的', '分词', '工具'],
[nz, v, q, a, u, n, n],[3, 0, 0, 2, 0, 3, 1]]
【批量样本】:rank_result = [
(['LAC', '是', '个', '优秀', '的', '分词', '工具'],
[nz, v, q, a, u, n, n], [3, 0, 0, 2, 0, 3, 1]),
(['百度', '是', '一家', '高科技', '公司'],
[ORG, v, m, n, n], [3, 0, 2, 3, 1])
]
Der Satz von Beschriftungen für jede Kategorie von Wortbedeutung ist wie folgt. Wir verwenden einen 4-stufigen Farbverlauf zur Klassifizierung:
Etikett | Bedeutung | häufig in Teilen der Rede |
---|---|---|
0 | In der Abfrage ausgedrückte redundante Wörter | p, w, xc ... |
1 | Schwach qualifizierte Wörter in der Abfrage | r, c, u... |
2 | Stark qualifizierte Wörter in der Abfrage | n, s, v... |
3 | Kernwörter in der Abfrage | nz, nw, LOC ... |
Auf der Grundlage der Modellausgabe unterstützt LAC Benutzer auch bei der Konfiguration benutzerdefinierter Segmentierungsergebnisse und der Ausgabe von Eigennamentypen. Wenn das Modell ein Element vorhersagt, das mit dem Wörterbuch übereinstimmt, ersetzt es das ursprüngliche Ergebnis durch ein benutzerdefiniertes Ergebnis. Um eine genauere Übereinstimmung zu erreichen, unterstützen wir lange Fragmente, die aus mehreren Wörtern bestehen, als Elemente.
Wir implementieren diese Funktion, indem wir eine Wörterbuchdatei laden, die aus einem oder mehreren aufeinanderfolgenden Wörtern besteht. Wenn kein „/“ vorhanden ist, wird diese Funktion verwendet. label Das Standardlabel des Modells wird verwendet. Je mehr Wörter pro Item vorhanden sind, desto präziser ist der Interventionseffekt.
Beispiel einer Wörterbuchdatei
Dies ist nur ein Beispiel, um die Ergebnisse unter verschiedenen Anforderungen zu zeigen. Der Modus zum Konfigurieren des Wörterbuchs mit Platzhaltern wird in Zukunft geöffnet sein, also bleiben Sie dran.
春天/SEASON
花/n 开/v
秋天的风
落 阳
from LAC import LAC
lac = LAC ()
# 装载干预词典, sep参数表示词典文件采用的分隔符,为None时默认使用空格或制表符't'
lac . load_customization ( 'custom.txt' , sep = None )
# 干预后结果
custom_result = lac . run ( u"春天的花开秋天的风以及冬天的落阳" )
春天/TIME 的/u 花开/v 秋天/TIME 的/u 风/n 以及/c 冬天/TIME 的/u 落阳/n
春天/SEASON 的/u 花/n 开/v 秋天的风/n 以及/c 冬天/TIME 的/u 落/n 阳/n
Wir bieten auch eine inkrementelle Trainingsschnittstelle an. Benutzer können ihre eigenen Daten für das inkrementelle Training verwenden. Zunächst müssen die Daten in das Format der Modelleingabe konvertiert werden, und alle Datendateien sind „UTF-8“ codiert:
Datenbeispiel
In Übereinstimmung mit dem Format der meisten Open-Source-Wortsegmentierungsdatensätze werden Leerzeichen als Wortsegmentierungsmarkierungen verwendet, wie unten gezeigt:
LAC 是 个 优秀 的 分词 工具 。
百度 是 一家 高科技 公司 。
春天 的 花开 秋天 的 风 以及 冬天 的 落阳 。
from LAC import LAC
# 选择使用分词模型
lac = LAC ( mode = 'seg' )
# 训练和测试数据集,格式一致
train_file = "./data/seg_train.tsv"
test_file = "./data/seg_test.tsv"
lac . train ( model_save_dir = './my_seg_model/' , train_data = train_file , test_data = test_file )
# 使用自己训练好的模型
my_lac = LAC ( model_path = 'my_seg_model' )
Beispieldaten
Basierend auf den Wortsegmentierungsdaten wird jedes Wort mit seiner Wortart oder Entitätskategorie in der Form „/type“ markiert. Es ist erwähnenswert, dass das Training der lexikalischen Analyse derzeit nur Daten unterstützt, deren Bezeichnungssystem mit unserem übereinstimmt. Wir werden in Zukunft auch die Unterstützung für das neue Tag-System eröffnen, also bleiben Sie dran.
LAC/nz 是/v 个/q 优秀/a 的/u 分词/n 工具/n 。/w
百度/ORG 是/v 一家/m 高科技/n 公司/n 。/w
春天/TIME 的/u 花开/v 秋天/TIME 的/u 风/n 以及/c 冬天/TIME 的/u 落阳/n 。/w
from LAC import LAC
# 选择使用默认的词法分析模型
lac = LAC ()
# 训练和测试数据集,格式一致
train_file = "./data/lac_train.tsv"
test_file = "./data/lac_test.tsv"
lac . train ( model_save_dir = './my_lac_model/' , train_data = train_file , test_data = test_file )
# 使用自己训练好的模型
my_lac = LAC ( model_path = 'my_lac_model' )
.
├── python # Python调用的脚本
├── c++ # C++调用的代码
├── java # Java调用的代码
├── Android # Android调用的示例
├── README.md # 本文件
└── CMakeList.txt # 编译C++和Java调用的脚本
Wenn Sie LAC in Ihrer wissenschaftlichen Arbeit verwenden, fügen Sie bitte die folgenden Zitate hinzu. Wir freuen uns sehr, dass LAC Sie bei Ihrer wissenschaftlichen Arbeit unterstützen kann.
@article{jiao2018LAC,
title={Chinese Lexical Analysis with Deep Bi-GRU-CRF Network},
author={Jiao, Zhenyu and Sun, Shuqi and Sun, Ke},
journal={arXiv preprint arXiv:1807.01882},
year={2018},
url={https://arxiv.org/abs/1807.01882}
}
Wir begrüßen Entwickler, die Code zu LAC beisteuern. Wenn Sie neue Funktionen entwickeln und Fehler finden, können Sie gerne Pull-Anfragen und Probleme an Github senden.