SEANLP
Southeast Asia Natural Language Processing [Thai Vietnamese Khmer Lao Burmese(Myanmar) ]
Install / Use
/learn @zhaoshiyu/SEANLPREADME
SEANLP: Southeast Asia Natural Language Processing
东南亚语言信息处理
SEANLP目前有以下功能:
-
泰语:
- TCC(Thai Character Cluster)切分
- 音节切分
- 层叠条件随机场分词
- 单层条件随机场分词
- 词典极速分词
- 词典正向最长匹配分词
- 词典逆向最长匹配分词
- 词典正向最短匹配分词
- 词典逆向最短匹配分词
- 词性标注
- 句子相似度计算
- 关键词抽取
- 自动摘要
-
越南语:
- 条件随机场分词
- 词典极速分词
- 词典正向最长匹配分词
- 词典逆向最长匹配分词
- 词典正向最短匹配分词
- 词典逆向最短匹配分词
- 词性标注
- 句子相似度计算
- 关键词抽取
- 自动摘要
-
柬埔寨语(高棉语):
- KCC切分
- 条件随机场分词
- 词典极速分词
- 词典正向最长匹配分词
- 词典逆向最长匹配分词
- 词典正向最短匹配分词
- 词典逆向最短匹配分词
- 词性标注
- 句子相似度计算
- 关键词抽取
- 自动摘要
-
老挝语:
- 词典极速分词
- 词典正向最长匹配分词
- 词典逆向最长匹配分词
- 词典正向最短匹配分词
- 词典逆向最短匹配分词
- 词性标注
- 句子相似度计算
- 关键词抽取
- 自动摘要
-
缅甸语:
- 音节切分
- 条件随机场分词
- 词典极速分词
- 词典正向最长匹配分词
- 词典逆向最长匹配分词
- 词典正向最短匹配分词
- 词典逆向最短匹配分词
- 句子相似度计算
说明
-
什么是TCC (Thai Character Cluster),借用Wittawat Jitkrittum的另一种TCC切分实现中的解释:proposed in Character Cluster Based Thai Information Retrieval is a group of inseparable Thai characters. This inseparability derives from Thai writing system which is independent of any context. As a result, TCC can be determined by a simple list of rules describing e.g., what characters need to follow/precede other characters.
-
泰语TCC和高棉语KCC切分使用
规则+正则表达式实现,效率较低;泰语TCC切分可参考Wittawat Jitkrittum的另一种实现。 -
泰语单层条件随机场分词模型比层叠条件随机场分词模型大很多,需要很大的内存才能运行(
-Xmx>2G)。 -
缅甸语音节切功能中,由于音节词典中存在不同的编码和字库,不同的编码和字库书写顺序存在区别,所用缅甸语音节切分目前基本不能用。
-
缅甸语没有词性标注功能,所有缅甸语关键词抽取也存在问题。
-
分词中层叠条件随机场效果最好,最短匹配分词效果最差。
-
停用词不够全,主要包含了泰语和越南语的停用词。
下载
方法一、直接下载源码编译
可以自己接下载本项目源码进行打包
wget https://github.com/zhaoshiyu/SEANLP/archive/master.zip
unzip master.zip
cd SEANLP-master
mvn clean package -Dmaven.test.skip=true
或者git clone本项目:
git clone https://github.com/ZhaoShiyu/SEANLP.git
cd SEANLP
mvn clean package -Dmaven.test.skip=true
注意:此处下载的源码中不包含泰语单层条件随机场分词模型,需要完整模型请用方法二。
方法二、下载jar
下载SEANLP-1.1.0.jar, 或者使用seanlp-1.1.0-sources.jar中的模型。
调用
SEANLP所有的功能都可以通过工具类SEANLP进行调用。调用格式为SEANLP.语言.功能。
内存要求
单层条件随机场泰语分词模型很大,需要-Xmx>2G
Demo
demo可以参考下列位置:<br> 1. 分词和词性标注<br> 2. 句子相似度计算<br> 3. 关键词抽取和自动摘要<br>
1、分词和词性标注:
package cn.edu.kmust.seanlp.demo;
import cn.edu.kmust.seanlp.SEANLP;
/**
* 分词demo
* @author Zhao Shiyu
*
*/
public class SegmentDemo {
public static void main(String[] args) {
//泰语分词
String thText = "ความสัมพันธ์ในทางเศรษฐกิจกับระบบความสัมพันธ์ทางกฎหมาย";
System.out.println(SEANLP.Thai.syllableSegment(thText));
System.out.println(SEANLP.Thai.dCRFSegment(thText));
//System.out.println(SEANLP.Thai.gCRFSegment(thText));
System.out.println(SEANLP.Thai.datSegment(thText));
System.out.println(SEANLP.Thai.maxSegment(thText));
System.out.println(SEANLP.Thai.minSegment(thText));
System.out.println(SEANLP.Thai.reMaxSegment(thText));
System.out.println(SEANLP.Thai.reMinSegment(thText));
//越南语分词
String viText = "Hệ thống tín dụng - ngân hàng cũng tăng trưởng khá, ngày càng giữ vai trò quan trọng trong cơ cấu kinh tế Thủ đô.";
System.out.println(SEANLP.Vietnamese.crfSegment(viText));
System.out.println(SEANLP.Vietnamese.datSegment(viText));
System.out.println(SEANLP.Vietnamese.maxSegment(viText));
System.out.println(SEANLP.Vietnamese.minSegment(viText));
System.out.println(SEANLP.Vietnamese.reMaxSegment(viText));
System.out.println(SEANLP.Vietnamese.reMinSegment(viText));
//柬埔寨语(高棉语)分词
String khText = "ធាតុពិតនិងការបន្ដគំរាមកំហែងមកលើអ្នកការពារសិទ្ធិមនុស្សនៅកម្ពុជា។របាយការណ៍នេះផ្អែកលើការស៊ើបអង្កេតតែ";
System.out.println(SEANLP.Khmer.crfSegment(khText));
System.out.println(SEANLP.Khmer.datSegment(khText));
System.out.println(SEANLP.Khmer.maxSegment(khText));
System.out.println(SEANLP.Khmer.minSegment(khText));
System.out.println(SEANLP.Khmer.reMaxSegment(khText));
System.out.println(SEANLP.Khmer.reMinSegment(khText));
//老挝语分词
String loText = "ທ່ານວິນເຄັນເປັນປະທານບໍລິສັດອຽວເຊີວີເອີແອນ.ວີ.ກຸ່ມບໍລິສັດການພິມຂອງຊາວດັດ.";
System.out.println(SEANLP.Lao.datSegment(loText));
System.out.println(SEANLP.Lao.maxSegment(loText));
System.out.println(SEANLP.Lao.minSegment(loText));
System.out.println(SEANLP.Lao.reMaxSegment(loText));
System.out.println(SEANLP.Lao.reMinSegment(loText));
//缅甸语分词
String buText = "ကံဆိုးကံဇာတာကံထိုက်ကံနခိုကံနှိုးဆော်";
System.out.println(SEANLP.Burmese.datSegment(buText));
System.out.println(SEANLP.Burmese.maxSegment(buText));
System.out.println(SEANLP.Burmese.minSegment(buText));
System.out.println(SEANLP.Burmese.reMaxSegment(buText));
System.out.println(SEANLP.Burmese.reMinSegment(buText));
System.out.println(SEANLP.Burmese.syllableSegment(buText));
}
}
2、句子相似度计算
package cn.edu.kmust.seanlp.demo;
import cn.edu.kmust.seanlp.SEANLP;
/**
* 句子相似度计算demo
* @author Zhao Shiyu
*
*/
public class SimilarityDemo {
public static void main(String[] args) {
String thText = "ความสัมพันธ์ในทางเศรษฐกิจกับระบบความสัมพันธ์ทางกฎหมาย";
String viText = "Hệ thống tín dụng - ngân hàng cũng tăng trưởng khá, ngày càng giữ vai trò quan trọng trong cơ cấu kinh tế Thủ đô.";
String khText = "ធាតុពិតនិងការបន្ដគំរាមកំហែងមកលើអ្នកការពារសិទ្ធិមនុស្សនៅកម្ពុជា។របាយការណ៍នេះផ្អែកលើការស៊ើបអង្កេតតែ";
String loText = "ທ່ານວິນເຄັນເປັນປະທານບໍລິສັດອຽວເຊີວີເອີແອນ.ວີ.ກຸ່ມບໍລິສັດການພິມຂອງຊາວດັດ.";
String buText = "ကံဆိုးကံဇာတာကံထိုက်ကံနခိုကံနှိုးဆော်";
System.out.println(SEANLP.Thai.sentenceSimilarity(thText, thText));
System.out.println(SEANLP.Vietnamese.sentenceSimilarity(viText, viText));
System.out.println(SEANLP.Khmer.sentenceSimilarity(khText, khText));
System.out.println(SEANLP.Lao.sentenceSimilarity(loText, loText));
System.out.println(SEANLP.Burmese.sentenceSimilarity(buText, buText));
}
}
3、关键词抽取与自动摘要
package cn.edu.kmust.seanlp.demo;
import cn.edu.kmust.seanlp.SEANLP;
/**
* 关键词抽取和自动摘要demo
* @author Zhao Shiyu
*
*/
public class ExtractDemo {
public static void main(String[] args) {
String thDocument = "ญี่ปุ่นควรระมัดระวังคำพูดและพฤติกรรมเกี่ยวกับปัญหาทะเลจีนใต้ \n"
+ "สำนักข่าวแห่งประเทศจีนรายงานว่า นายหง เหล่ย โฆษกกระทรวงการต่างประเทศจีนกล่าวเมื่อวันที่ 19 มกราคมว่า ญี่ปุ่นควรจดจำประวัติศาสตร์การรุกรานให้แม่นยำ สำนึกผิดอย่างยิ่ง และระมัดระวังคำพูดและพฤติกรรมเกี่ยวกับปัญหาทะเลจีนใต้ \n"
+ "นายชินโซ อาเบะ นายกรัฐมนตรีญี่ปุ่นกล่าวเมื่อวันที่ 18 มกราคมว่า ญี่ปุ่นสใส่ใจอย่างยิ่งต่อการที่จีนสร้างเกาะเทียมกลางทะเลจีนใต้ และทดลองบุกเบิกทรัพยากรทั้งน้ำมันและแก๊สธรรมชาติในทะเลจีนตะวันออก เรียกร้องประชาคมโลกแสดงความเห็นเกี่ยวกับเรื่องนี้มากขึ้น \n"
+ "นายหง เหล่ยกล่าวต่อการนี้ว่า การบุกเบิกน้ำมันและแก๊สธรรมชาติของจีน ล้วนกระทำในน่านน้ำทะเลที่อยู่ภายใต้การควบคุมของจีนเองโดยปราศจากข้อกังขา ทุกสิ่งทุกอย่างอยู่ในกรอบอธิปไตยของจีนเอง อนึ่ง จีนครองอธิปไตยเหนือหมู่เกาะหนานซาและน่านน้ำทะเลโดยรอบอย่างมิอาจโต้แย้งได้";
String viDocument = "Đại hội lần thứ XII của Đảng họp phiên trù bị"
+ "NDĐT- Sáng 20-1, Đại hội đại biểu toàn quốc lần thứ XII của Đảng họp phiên trù bị, hoàn tất công tác chuẩn bị cần thiết cho phiên khai mạc sẽ diễn ra vào 8 giờ sáng 21-1."
+ "Mở đầu phiên họp trù bị, đồng chí Lê Hồng Anh, Ủy viên Bộ Chính trị, Thường trực Ban Bí thư Trung ương Đảng tuyên bố lý do."
+ "Đồng chí Trương Tấn Sang, Ủy viên Bộ Chính trị, Chủ tịch nước điều khiển phiên họp. Tiếp đó, Chủ tịch nước Trương Tấn Sang xin ý kiến Đại hội thông qua chương trình phiên họp trù bị, thông qua Quy chế làm việc của Đại hội."
+ "Đại hội đã hoàn thành các phần việc quan trọng gồm: bầu Đoàn Chủ tịch, Đoàn thư ký, Ban thẩm tra tư cách đại biểu, thông qua chương trình làm việc của Đại hội, thông qua Quy chế bầu cử của Đại hội và thông qua Báo cáo thẩm tra tư cách đại biểu."
+ "Buổi chiều, các đại biểu nghiên cứu tài liệu tại đoàn."
+ "Ngày mai 21-1, Đại hội đại biểu toàn quốc lần thứ XII của Đảng khai mạc tại Trung tâm Hội nghị quốc gia, Hà Nội. Đại hội tiến hành từ ngày 21 đến 28-1-2016, có nhiệm vụ đánh giá việc thực hiện Nghị quyết Đại hội XI của Đảng và nhìn lại chặng đường 30 năm đổi mới đất nước; thảo luận, thông qua Báo cáo Chính trị của Ban Chấp hành Trung ương khóa XI; các báo cáo: đánh giá kết quả thực hiện nhiệm vụ phát triển kinh tế- xã hội năm năm 2011-2015 và phương hướng nhiệm vụ phát triển kinh tế- xã hội năm năm 2016- 2020; kiểm điểm sự lãnh đạo, chỉ đạo của Ban Chấp hành Trung ương khóa XI; tổng kết thi hành Điều lệ Đảng khóa XI và đề xuất bổ sung, sửa đổi (nếu có); việc thực hiện Nghị quyết T.Ư 4 khóa XI về xây dựng Đảng. Đại hội bầu Ban Chấp hành Trung ương khóa XII. Chủ đề của Đại hội là Tăng cường xây dựng Đảng trong sạch, vững mạnh; phát huy sức mạnh toàn dân tộc và dân chủ xã hội chủ nghĩa; đẩy mạnh toàn diện, đồng bộ công cuộc đổi mới; bảo vệ vững chắc Tổ quốc, giữ vững môi trường hòa bình, ổn định; phấn đấu sớm đưa nước ta cơ bản trở thành nước công nghiệp theo hướng hiện đại."
+ "Tham dự Đại hội XII có 1510 đại biểu, đại diện cho hơn 4,5 triệu đảng viên, trong đó đại biểu đương nhiên có 197 đồng chí là Ủy viên Trung ương chính thức và dự khuyết khóa XI; 1300 đại biểu được bầu tại các đại hội Đảng bộ trực thuộc Trung ương; 13 đại biểu chỉ định. Công tác chuẩn bị Đại hội đã được Ban Chấp hành Trung ương, trực tiếp là Bộ Chính trị, Ban Bí thư chỉ đạo chặt chẽ, đến nay đã hoàn tất.";
String loDocument = "ປະທານປະເທດຈີນເລີ່ມຢ້ຽມຢາມຊາອຸດິດອາຣັບບີ \n"
+ "ເວລາ 13:35 ໂມງຂອງວັນທີ 19 ມັງກອນນີ້ຕາມເວລາທ້ອງຖິ່ນ, ທ່ານ ສີຈີ້ນຜິງ ປະທານປະເທດຈີນໄດ້ເດີນທາງໄປຮອດສະໜາມບິນສາກົນກະສັດຄາເລັດທີ່ນະຄອນ
