LAC หรือชื่อเต็มของ Lexical Analysis of Chinese เป็นเครื่องมือวิเคราะห์คำศัพท์ร่วมที่พัฒนาโดยแผนกประมวลผลภาษาธรรมชาติของไป่ตู้ เพื่อใช้งานฟังก์ชันต่างๆ เช่น การแบ่งส่วนคำภาษาจีน การแท็กส่วนของคำพูด และการจดจำชื่อที่เหมาะสม เครื่องมือนี้มีคุณสมบัติและข้อดีดังต่อไปนี้:
ที่นี่เราจะแนะนำการติดตั้งและการใช้งาน Python เป็นหลัก และการใช้ภาษาอื่นๆ:
รหัสที่เข้ากันได้กับ Python2/3
การติดตั้งอัตโนมัติเต็มรูปแบบ: pip install lac
การดาวน์โหลดแบบกึ่งอัตโนมัติ: ดาวน์โหลดครั้งแรกhttp://pypi.python.org/pypi/lac/ คลายการบีบอัดและเรียกใช้ python setup.py install
หลังจากการติดตั้งเสร็จสมบูรณ์ คุณสามารถป้อน lac
หรือ lac --segonly
หรือ lac --rank
บนบรรทัดคำสั่งเพื่อเริ่มบริการเพื่อประสบการณ์ที่รวดเร็ว
เครือข่ายในประเทศสามารถใช้การติดตั้งแหล่งที่มาของ Baidu ได้ ความเร็วในการติดตั้งจะเร็วขึ้น:
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 )
ผลลัพธ์ของแต่ละประโยคคือผลการแบ่งส่วนคำ word_list และ tags_list ของแต่ละคำซึ่งมีรูปแบบเป็น (word_list, tags_list)
【单样本】: lac_result = ([百度, 是, 一家, 高科技, 公司], [ORG, v, m, n, n])
【批量样本】:lac_result = [
([百度, 是, 一家, 高科技, 公司], [ORG, v, m, n, n]),
([LAC, 是, 个, 优秀, 的, 分词, 工具], [nz, v, q, a, u, n, n])
]
ชุดแท็กหมวดหมู่ส่วนของคำพูดและชื่อเฉพาะมีดังต่อไปนี้ โดยเราจะทำเครื่องหมายหมวดหมู่ชื่อที่เหมาะสมสี่หมวดหมู่ที่ใช้บ่อยที่สุดด้วยตัวพิมพ์ใหญ่:
ฉลาก | ความหมาย | ฉลาก | ความหมาย | ฉลาก | ความหมาย | ฉลาก | ความหมาย |
---|---|---|---|---|---|---|---|
n | คำนามทั่วไป | ฉ | คำนามสถานที่ | ส | คำนามสถานที่ | ตอนนี้ | ชื่องาน |
นิวซีแลนด์ | ชื่ออื่นที่เหมาะสม | โวลต์ | กริยาทั่วไป | วดี | กริยาวิเศษณ์ | ว | คำนามคำกริยา |
ก | คุณศัพท์ | โฆษณา | คำวิเศษณ์ | หนึ่ง | คำนาม | ง | คำวิเศษณ์ |
ม | ปริมาณ | ถาม | ปริมาณ | ร | สรรพนาม | พี | บุพบท |
ค | ร่วม | คุณ | อนุภาค | xc | คำฟังก์ชันอื่น ๆ | ว | เครื่องหมายวรรคตอน |
ต่อ | ชื่อ | ล็อค | ชื่อสถานที่ | องค์กร | ชื่อองค์กร | เวลา | เวลา |
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])
]
ชุดป้ายกำกับสำหรับความสำคัญของคำแต่ละประเภทมีดังนี้ เราใช้การไล่ระดับสี 4 ระดับในการจำแนกประเภท:
ฉลาก | ความหมาย | ทั่วไปในส่วนของคำพูด |
---|---|---|
0 | คำซ้ำซ้อนที่แสดงในแบบสอบถาม | พี ว เอ็กซ์ซี ... |
1 | คำที่ไม่เข้าเกณฑ์ในการสืบค้น | ร ซี คุณ... |
2 | คำที่เข้าเกณฑ์อย่างยิ่งในการสืบค้น | เอ็น ส วี... |
3 | คำหลักในการสืบค้น | นิวซีแลนด์, ใต้, LOC ... |
บนพื้นฐานของเอาต์พุตโมเดล LAC ยังสนับสนุนผู้ใช้ในการกำหนดค่าผลลัพธ์การแบ่งส่วนแบบกำหนดเองและเอาต์พุตประเภทชื่อที่เหมาะสม เมื่อแบบจำลองคาดการณ์รายการที่ตรงกับพจนานุกรม โมเดลจะแทนที่ผลลัพธ์ดั้งเดิมด้วยผลลัพธ์ที่กำหนดเอง เพื่อให้การจับคู่มีความแม่นยำมากขึ้น เราสนับสนุนส่วนยาวที่ประกอบด้วยคำหลายคำเป็นรายการ
เราใช้ฟังก์ชันนี้โดยการโหลดไฟล์พจนานุกรม แต่ละบรรทัดแสดงถึงรายการที่กำหนดเอง ซึ่งประกอบด้วยคำเดียวหรือหลายคำที่ต่อเนื่องกัน หลังจากแต่ละคำเพื่อระบุป้ายกำกับ label ป้ายกำกับเริ่มต้นของโมเดลจะถูกใช้ ยิ่งมีคำต่อรายการมากเท่าใด เอฟเฟกต์การแทรกแซงก็จะยิ่งแม่นยำมากขึ้นเท่านั้น
ตัวอย่างไฟล์พจนานุกรม
นี่เป็นเพียงตัวอย่างเพื่อแสดงผลลัพธ์ภายใต้ข้อกำหนดต่างๆ โหมดการกำหนดค่าพจนานุกรมด้วยไวด์การ์ดจะเปิดขึ้นในอนาคต ดังนั้นโปรดคอยติดตาม
春天/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
นอกจากนี้เรายังมีอินเทอร์เฟซการฝึกอบรมเพิ่มเติม ผู้ใช้สามารถใช้ข้อมูลของตนเองสำหรับการฝึกอบรมเพิ่มเติมได้ ขั้นแรก ข้อมูลจะต้องถูกแปลงเป็นรูปแบบอินพุตโมเดล และไฟล์ข้อมูลทั้งหมดจะถูกเข้ารหัส "UTF-8":
ตัวอย่างข้อมูล
เพื่อให้สอดคล้องกับรูปแบบของชุดข้อมูลการแบ่งส่วนคำแบบโอเพ่นซอร์สส่วนใหญ่ ช่องว่างจะถูกใช้เป็นเครื่องหมายการแบ่งส่วนคำ ดังที่แสดงด้านล่าง:
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' )
ข้อมูลตัวอย่าง
จากข้อมูลการแบ่งส่วนคำ แต่ละคำจะถูกทำเครื่องหมายด้วยส่วนของคำพูดหรือหมวดหมู่เอนทิตีในรูปแบบของ "/ ประเภท" เป็นที่น่าสังเกตว่าปัจจุบันการฝึกอบรมการวิเคราะห์คำศัพท์รองรับเฉพาะข้อมูลที่มีระบบป้ายกำกับที่สอดคล้องกับของเราเท่านั้น นอกจากนี้เรายังจะเปิดการรองรับระบบแท็กใหม่ในอนาคตด้วย ดังนั้นโปรดคอยติดตาม
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调用的脚本
หากคุณใช้ LAC ในงานวิชาการของคุณ โปรดเพิ่มข้อมูลอ้างอิงต่อไปนี้ เรายินดีเป็นอย่างยิ่งที่ LAC สามารถช่วยเหลือคุณในงานวิชาการของคุณได้
@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}
}
เรายินดีต้อนรับนักพัฒนาที่ร่วมสนับสนุนโค้ดให้กับ LAC หากคุณพัฒนาคุณสมบัติใหม่และพบข้อบกพร่อง...คุณสามารถส่งคำขอ Pull และปัญหาไปยัง Github ได้