LAC, nama lengkap Analisis Leksikal Bahasa Mandarin, adalah alat analisis leksikal gabungan yang dikembangkan oleh Departemen Pemrosesan Bahasa Alami Baidu untuk mewujudkan fungsi seperti segmentasi kata dalam bahasa Mandarin, penandaan bagian ucapan, dan pengenalan nama yang tepat. Alat ini memiliki beberapa fitur dan keunggulan sebagai berikut:
Di sini kami terutama memperkenalkan instalasi dan penggunaan Python, serta penggunaan bahasa lain:
Kode kompatibel dengan Python2/3
Instalasi sepenuhnya otomatis: pip install lac
Unduhan semi-otomatis: unduh pertama http://pypi.python.org/pypi/lac/, dekompresi dan jalankan python setup.py install
Setelah instalasi selesai, Anda dapat memasukkan lac
atau lac --segonly
atau lac --rank
pada baris perintah untuk memulai layanan untuk pengalaman cepat.
Jaringan domestik dapat menggunakan instalasi sumber Baidu, kecepatan instalasi lebih cepat:
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 )
Output setiap kalimat adalah hasil segmentasi kata word_list dan tag_list setiap kata yang formatnya (word_list, tag_list)
【单样本】: lac_result = ([百度, 是, 一家, 高科技, 公司], [ORG, v, m, n, n])
【批量样本】:lac_result = [
([百度, 是, 一家, 高科技, 公司], [ORG, v, m, n, n]),
([LAC, 是, 个, 优秀, 的, 分词, 工具], [nz, v, q, a, u, n, n])
]
Kumpulan tag kategori nama diri dan part-of-speech adalah sebagai berikut, di mana kami menandai empat kategori nama diri yang paling umum digunakan dalam huruf besar:
Label | arti | Label | arti | Label | arti | Label | arti |
---|---|---|---|---|---|---|---|
N | kata benda umum | F | kata benda lokasi | S | kata benda tempat | sekarang | Judul pekerjaan |
tidak | Nama diri lainnya | ay | kata kerja umum | ay | kata keterangan kata kerja | ay | kata benda kata kerja |
A | kata sifat | iklan | kata keterangan | sebuah | kata benda | D | kata keterangan |
M | Pembilang | Q | pembilang | R | kata ganti | P | preposisi |
C | konjungsi | kamu | partikel | xc | Kata fungsi lainnya | w | tanda baca |
PER | nama | LOK | Nama tempat | ORANG | Nama organisasi | WAKTU | waktu |
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])
]
Kumpulan label untuk setiap kategori kepentingan kata adalah sebagai berikut. Kami menggunakan gradien 4 Tingkat untuk klasifikasi:
Label | arti | umum dalam bagian pidato |
---|---|---|
0 | Kata-kata yang berlebihan diungkapkan dalam pertanyaan | p, w, xc... |
1 | Kata-kata dengan kualifikasi lemah dalam kueri | r, c, kamu... |
2 | Kata-kata yang sangat berkualitas dalam kueri | n, s, v... |
3 | kata inti dalam query | nz, sekarang, LOC ... |
Berdasarkan keluaran model, LAC juga mendukung pengguna untuk mengonfigurasi hasil segmentasi yang disesuaikan dan keluaran jenis nama yang tepat. Saat model memprediksi item yang cocok dengan kamus, model tersebut akan mengganti hasil asli dengan hasil yang disesuaikan. Untuk mencapai pencocokan yang lebih tepat, kami mendukung fragmen panjang yang terdiri dari beberapa kata sebagai satu item.
Kami menerapkan fungsi ini dengan memuat file kamus. Setiap baris file kamus mewakili item yang disesuaikan, terdiri dari satu kata atau beberapa kata berurutan. '/' digunakan setelah setiap kata untuk menunjukkan label. label Label default model akan digunakan. Semakin banyak kata per item, semakin tepat efek intervensinya.
Contoh file kamus
Ini hanyalah contoh untuk menunjukkan hasil berdasarkan berbagai persyaratan. Mode konfigurasi kamus dengan wildcard akan dibuka di masa mendatang, jadi pantau terus.
春天/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
Kami juga menyediakan antarmuka pelatihan tambahan. Pengguna dapat menggunakan data mereka sendiri untuk pelatihan tambahan. Pertama, data perlu diubah ke dalam format input model, dan semua file data dikodekan "UTF-8":
Sampel data
Konsisten dengan format sebagian besar kumpulan data segmentasi kata sumber terbuka, spasi digunakan sebagai penanda segmentasi kata, seperti yang ditunjukkan di bawah ini:
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' )
data sampel
Berdasarkan data segmentasi kata, setiap kata ditandai dengan kategori part of Speech atau entitasnya berupa “/type”. Perlu dicatat bahwa pelatihan analisis leksikal saat ini hanya mendukung data yang sistem labelnya konsisten dengan sistem kami. Kami juga akan membuka dukungan untuk sistem tag baru di masa mendatang, jadi pantau terus.
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调用的脚本
Jika Anda menggunakan LAC dalam karya akademis Anda, silakan tambahkan kutipan berikut. Kami sangat senang bahwa LAC dapat membantu Anda dalam pekerjaan akademis Anda.
@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}
}
Kami menyambut pengembang untuk menyumbangkan kode ke LAC. Jika Anda mengembangkan fitur baru dan menemukan bug...Anda dipersilakan untuk mengirimkan permintaan Pull dan masalah ke Github.