แพ็คเกจการประมวลผลภาษาธรรมชาติของ AHA รวม HANLP , Word2vec , Mate-Tools และโครงการอื่น ๆ ให้บริการการประมวลผลภาษาธรรมชาติที่มีคุณภาพสูง
ฟังก์ชั่นปัจจุบันที่จัดทำโดย AHANLP คือ:
Ahanlp.jar เวอร์ชันล่าสุดและแพ็คเก็ตข้อมูลพื้นฐานที่สอดคล้องกัน ahanlp_base คลิกที่นี่เพื่อดาวน์โหลด ไฟล์การกำหนดค่า ahanlp.properties และ hanlp.properties ถูกนำไปใส่ใน classpath สำหรับโครงการส่วนใหญ่คุณจะต้องใส่ไว้ในไดเรกทอรี SRC เท่านั้น IDE จะคัดลอกไปยัง ClassPath โดยอัตโนมัติในระหว่างการรวบรวม
Ahanlp ติดตามโครงสร้างองค์กรข้อมูลของ HANLP รหัสและการแยกข้อมูล ผู้ใช้สามารถเลือกแพ็คเก็ตข้อมูลที่เกี่ยวข้องเพื่อดาวน์โหลดตามความต้องการของพวกเขา:
dictionary และไดเรกทอรี model จะถูกเก็บไว้ใน data/ ไดเรกทอรีของโครงการdata/model/ ไดเรกทอรีของโครงการpython -m pip install xxx.whl หลังจากดาวน์โหลด) จากนั้นดาวน์โหลด Word_Cloud (Extract Code 9JB6) และวางโฟลเดอร์ word_cloud ที่แยกออกมาในไดเรกทอรีรูทโครงการพารามิเตอร์ทั้งหมดในโครงการ AHANLP ถูกอ่านจากไฟล์การกำหนดค่า (ไม่แนะนำให้ปรับเปลี่ยนผู้ใช้) และต่อไปนี้เป็นคำอธิบายสั้น ๆ
ไฟล์การกำหนดค่าหลักคือ ahanlp.properties และเส้นทางโมเดล Word2vec จำเป็นต้องได้รับการกำหนดค่าและค่าเริ่มต้นคือ
word2vecModel = data/model/wiki_chinese_word2vec(Google).model
hanLDAModel = data/model/SogouCS_LDA.model
srlTaggerModel = data/model/srl/CoNLL2009-ST-Chinese-ALL.anna-3.3.postagger.model
srlParserModel = data/model/srl/CoNLL2009-ST-Chinese-ALL.anna-3.3.parser.model
srlModel = data/model/srl/CoNLL2009-ST-Chinese-ALL.anna-3.3.srl-4.1.srl.model
wordCloudPath = word_cloud/
pythonCMD = python
ไฟล์การกำหนดค่า HANLP คือ hanlp.properties คุณจะต้องตั้งค่าเส้นทางที่ไดเรกทอรีข้อมูลอยู่ในบรรทัดแรก ค่าเริ่มต้นคือ
root=./
หมายเหตุ: โมดูลการติดฉลากบทบาทความหมายมีรอยเท้าหน่วยความจำสูง หากคุณต้องการใช้คุณสมบัตินี้โปรดตั้งค่ารอยเท้าหน่วยความจำสูงสุดของ JVM เป็น 4GB
ฟังก์ชั่นเกือบทั้งหมดของ AHANLP สามารถเรียกได้อย่างรวดเร็วผ่านคลาสเครื่องมือ AHANLP ขอแนะนำให้ผู้ใช้โทรผ่านคลาสเครื่องมือ AHANLP เสมอดังนั้นหลังจากอัพเกรด AHANLP ในอนาคตผู้ใช้ไม่จำเป็นต้องแก้ไขรหัสการโทร
การสาธิตทั้งหมดอยู่ภายใต้ test.demo ครอบคลุมรายละเอียดมากกว่าเอกสารแนะนำด้านล่าง ขอแนะนำอย่างยิ่งให้เรียกใช้หนึ่งครั้งและคุณสามารถตรวจสอบได้:
เอกสารอินเตอร์เฟส AHANLP
String content = "苏州大学的周国栋教授正在教授自然语言处理课程。" ;
// 标准分词
List < Term > stdSegResult = AHANLP . StandardSegment ( content );
System . out . println ( stdSegResult );
//[苏州大学/ntu, 的/ude1, 周/qt, 国栋/nz, 教授/nnt, 正在/d, 教授/nnt, 自然语言处理/nz, 课程/n, 。/w]
// NLP分词
List < Term > nlpSegResult = AHANLP . NLPSegment ( content );
System . out . println ( nlpSegResult );
//[苏州大学/ntu, 的/u, 周国栋/nr, 教授/n, 正在/d, 教授/v, 自然语言处理/nz, 课程/n, 。/w]เซ็กเมนต์มาตรฐานห่อ หุ้มโมเดล HMM-Bigram และใช้วิธีการหมุนเวียนที่สั้นที่สุดในการหารคำ (โซลูชันวงจรสั้นที่สุดใช้อัลกอริทึม Viterbi) โดยคำนึงถึงประสิทธิภาพและผลกระทบ NLP Plantiple (NLPSegment) ห่อหุ้มโมเดล Perceptron ซึ่งได้รับการสนับสนุนโดยกรอบการติดฉลากลำดับ Perceptron ที่มีโครงสร้างและดำเนินการตามคำอธิบายประกอบการตั้งคำอธิบายประกอบและการตั้งชื่อส่วนหนึ่งของคำอธิบายและการตั้งชื่อในเวลาเดียวกัน
ผลการคืนค่าเริ่มต้นของคำนามคำมีคำและส่วนหนึ่งของการพูด คุณสามารถรับคำหรือส่วนหนึ่งของรายการคำพูดได้โดย AHANLP.getWordList(stdSegResult) และ AHANLP.getNatureList(stdSegResult) ตามลำดับ สำหรับคำอธิบายประกอบส่วนหนึ่งของคำพูดโปรดดู "คอลเลกชันคำอธิบายประกอบส่วนหนึ่งของ HANLP"
หากคุณต้องการปรับแต่งการกรองส่วนหนึ่งของการพูดคุณสามารถใช้คลาส me.xiaosheng.chnlp.seg.POSFilter ซึ่งใช้วิธีการทั่วไปเช่นการกรองเครื่องหมายวรรคตอนและการรักษาคำจริง
// 过滤标点
POSFilter . removePunc ( stdSegResult );
// 保留名词
POSFilter . selectPOS ( stdSegResult , Arrays . asList ( "n" , "ns" , "nr" , "nt" , "nz" ));คำว่าคำกริยาข้างต้นรองรับการกรองคำหยุดเพียงแค่นำพารามิเตอร์ที่สองมาตั้งค่าเป็นจริง
List < Term > stdSegResult = AHANLP . NLPSegment ( content , true );
List < String > stdWordList = AHANLP . getWordList ( stdSegResult );
System . out . println ( stdWordList );
//[苏州大学, 周国栋, 教授, 正在, 教授, 自然语言处理, 课程] การแบ่งส่วน Word รองรับพจนานุกรมที่ผู้ใช้กำหนด HANLP ใช้คลาส CustomDictionary เพื่อเป็นตัวแทน มันเป็นพจนานุกรมที่ผู้ใช้กำหนดไว้ทั่วโลกที่มีผลต่อเครื่องจักรคำศัพท์ทั้งหมด เส้นทางข้อความพจนานุกรมคือ data/dictionary/custom/CustomDictionary.txt ซึ่งผู้ใช้สามารถเพิ่มคำของตัวเอง (ไม่แนะนำ) นอกจากนี้คุณยังสามารถสร้างไฟล์ข้อความใหม่แยกกันและต่อท้ายพจนานุกรมผ่านไฟล์กำหนดค่า CustomDictionaryPath=data/dictionary/custom/CustomDictionary.txt; 我的词典.txt; (ที่แนะนำ).
รูปแบบพจนานุกรม:
[单词] [词性A] [A的频次] [词性B] [B的频次] ... หากส่วนหนึ่งของคำพูดไม่ได้เขียนก็หมายความว่าส่วนเริ่มต้นของการพูดจะถูกนำมาใช้ในพจนานุกรม全国地名大全.txt ns; หากพื้นที่ตามด้วยส่วนของการพูดจะตามมาทันทีด้วยส่วนของการพูดพจนานุกรมจะเริ่มต้นเป็นส่วนหนึ่งของการพูด** หมายเหตุ: ** โปรแกรมอ่านพจนานุกรมจากไฟล์แคช (filename.txt.bin หรือ filename.txt.trie.dat และ filename.txt.trie.value) โดยค่าเริ่มต้น หากคุณแก้ไขพจนานุกรมใด ๆ การลบแคชเท่านั้นจะมีผล
List < List < Term >> segResults = AHANLP . seg2sentence ( "Standard" , content , true );
for ( int i = 0 ; i < senList . size (); i ++)
System . out . println (( i + 1 ) + " : " + AHANLP . getWordList ( results . get ( i )));การแบ่งพาร์ติชันด้วยประโยคบนข้อความยาวก็เป็นการใช้งานทั่วไปและส่งคืนรายการผลลัพธ์ที่ประกอบด้วยประโยคทั้งหมดของคำนาม ประเภทของ segmenter คำถูกควบคุมผ่านพารามิเตอร์ segtype แรก: "มาตรฐาน" สอดคล้องกับเซ็กเมนต์คำมาตรฐานและ "NLP" สอดคล้องกับอนุภาค NLP
แน่นอนคุณสามารถทำลายประโยคด้วยตนเองแล้วแบ่งออกเป็นหลายประโยค
List < String > senList = AHANLP . splitSentence ( content );
List < List < Term >> senWordList = AHANLP . splitWordInSentences ( "Standard" , senList , true );
for ( int i = 0 ; i < senWordList . size (); i ++)
System . out . println (( i + 1 ) + " : " + senWordList . get ( i )); String sentence = "2013年9月,习近平出席上合组织比什凯克峰会和二十国集团圣彼得堡峰会,"
+ "并对哈萨克斯坦等中亚4国进行国事访问。在“一带一路”建设中,这次重大外交行程注定要被历史铭记。" ;
List < NERTerm > NERResult = AHANLP . NER ( sentence );
System . out . println ( NERResult );
//[中亚/loc, 习近平/per, 上合组织/org, 二十国集团/org, 哈萨克斯坦/loc, 比什凯克/loc, 圣彼得堡/loc, 2013年9月/time] โมเดล Perceptron และ CRF ถูกห่อหุ้มได้รับการสนับสนุนโดยกรอบการติดฉลากลำดับ Perceptron ที่มีโครงสร้างและเวลาชื่อสถานที่ชื่อบุคคลและชื่อองค์กรในข้อความถูกระบุ: ชื่อบุคคล per ชื่อ loc ตำแหน่ง org และ time
String sentence = "北京是中国的首都" ;
CoNLLSentence deps = AHANLP . DependencyParse ( sentence );
for ( CoNLLWord dep : deps )
System . out . printf ( "%s --(%s)--> %s n " , dep . LEMMA , dep . DEPREL , dep . HEAD . LEMMA );
/*
北京 --(主谓关系)--> 是
是 --(核心关系)--> ##核心##
中国 --(定中关系)--> 首都
的 --(右附加关系)--> 中国
首都 --(动宾关系)--> 是
*/
// 词语依存路径
List < List < Term >> wordPaths = AHANLP . getWordPathsInDST ( sentence );
for ( List < Term > wordPath : wordPaths ) {
System . out . println ( wordPath . get ( 0 ). word + " : " + AHANLP . getWordList ( wordPath ));
}
/*
北京 : [北京, 是]
是 : [是]
中国 : [中国, 首都, 是]
的 : [的, 中国, 首都, 是]
首都 : [首都, 是]
*/
// 依存句法树前2层的词语
List < String > words = AHANLP . getTopWordsInDST ( sentence , 1 );
System . out . println ( words );
// [北京, 是, 首都] การวิเคราะห์ทางไวยากรณ์การพึ่งพาคือการห่อหุ้มของ NeuralNetworkDependencyParser ใน HANLP โดยใช้เครื่องวิเคราะห์ไวยากรณ์การพึ่งพาประสิทธิภาพสูงตามเครือข่ายประสาท ผลการวิเคราะห์อยู่ในรูปแบบ conll และคุณสามารถวนซ้ำตามประเภท conllword ดังที่แสดงไว้ข้างต้น CoNLLWord.LEMMA เป็นคำทาส, CoNLLWord.HEAD.LEMMA เป็นคำที่โดดเด่นและ CoNLLWord.DEPREL เป็นฉลากที่ขึ้นกับและค่าเริ่มต้นไปยังฉลากภาษาจีน
หากคุณต้องการใช้ฉลากภาษาอังกฤษเพียงแค่นำพารามิเตอร์ที่สองมาตั้งค่าเป็นจริง
CoNLLSentence enDeps = AHANLP.DependencyParse(sentence, true);
สำหรับคำอธิบายโดยละเอียดของแท็กการพึ่งพาโปรดดู "แท็กการพึ่งพา"
String document = "我国第二艘航空母舰下水仪式26日上午在中国船舶重工集团公司大连造船厂举行。航空母舰在拖曳牵引下缓缓移出船坞,停靠码头。目前,航空母舰主船体完成建造,动力、电力等主要系统设备安装到位。" ;
List < String > wordList = AHANLP . extractKeyword ( document , 5 );
System . out . println ( wordList );
//[航空母舰, 动力, 建造, 牵引, 完成]ฟังก์ชั่น extractkeyword กำหนดจำนวนคำหลักที่ส่งคืนผ่านพารามิเตอร์ที่สอง ค่าอันดับของแต่ละคำจะถูกคำนวณภายในผ่านอัลกอริทึม Textrank และจัดเรียงตามลำดับจากมากไปน้อยของค่าอันดับโดยแยกสองสามก่อนหน้าเป็นคำหลัก สำหรับหลักการเฉพาะโปรดดูที่ "คำหลักในการสกัดอัลกอริทึมของ Textrank และบทคัดย่อ"
String document = "我国第二艘航空母舰下水仪式26日上午在中国船舶重工集团公司大连造船厂举行。"
+ "按照国际惯例,剪彩后进行“掷瓶礼”。随着一瓶香槟酒摔碎舰艏,两舷喷射绚丽彩带,周边船舶一起鸣响汽笛,全场响起热烈掌声。"
+ "航空母舰在拖曳牵引下缓缓移出船坞,停靠码头。第二艘航空母舰由我国自行研制,2013年11月开工,2015年3月开始坞内建造。" + "目前,航空母舰主船体完成建造,动力、电力等主要系统设备安装到位。"
+ "出坞下水是航空母舰建设的重大节点之一,标志着我国自主设计建造航空母舰取得重大阶段性成果。" + "下一步,该航空母舰将按计划进行系统设备调试和舾装施工,并全面开展系泊试验。" ;
List < String > senList = AHANLP . extractKeySentence ( document , 5 );
System . out . println ( "Key Sentences: " );
for ( int i = 0 ; i < senList . size (); i ++)
System . out . println (( i + 1 ) + " : " + senList . get ( i ));
System . out . println ( "Summary: " );
System . out . println ( AHANLP . extractSummary ( document , 50 ));
/*
Key Sentences:
1 : 航空母舰主船体完成建造
2 : 该航空母舰将按计划进行系统设备调试和舾装施工
3 : 我国第二艘航空母舰下水仪式26日上午在中国船舶重工集团公司大连造船厂举行
4 : 标志着我国自主设计建造航空母舰取得重大阶段性成果
5 : 出坞下水是航空母舰建设的重大节点之一
Summary:
我国第二艘航空母舰下水仪式26日上午在中国船舶重工集团公司大连造船厂举行。航空母舰主船体完成建造。
*/ฟังก์ชั่น ExtractKeySentence มีหน้าที่ในการแยกประโยคคีย์และพารามิเตอร์ที่สองควบคุมจำนวนประโยคคีย์ที่สกัด ฟังก์ชั่น extractsummary รับผิดชอบการสรุปอัตโนมัติและพารามิเตอร์ที่สองตั้งค่าขีด จำกัด บนของจำนวนคำสรุป ค่าอันดับของแต่ละประโยคจะถูกคำนวณภายในผ่านอัลกอริทึม Textrank และจัดเรียงตามลำดับจากมากไปน้อยของค่าอันดับโดยแยกสองสามก่อนหน้าเป็นประโยคสำคัญ บทสรุปอัตโนมัตินั้นคล้ายคลึงกันและยังพิจารณาตำแหน่งของประโยคในข้อความต้นฉบับและความยาวของประโยค สำหรับหลักการเฉพาะโปรดดูที่ "คำหลักในการสกัดอัลกอริทึมของ Textrank และบทคัดย่อ"
ระดับของความคล้ายคลึงกันระหว่างประโยค (เช่นน้ำหนักในอัลกอริทึม Textrank) คำนวณโดยใช้ฟังก์ชั่นที่จัดทำโดย Word2vec รูปแบบที่ได้รับการฝึกฝนในคลังภาษาจีนของวิกิพีเดียนั้นใช้โดยค่าเริ่มต้นและสามารถใช้โมเดลที่กำหนดเองได้
System . out . println ( "猫 | 狗 : " + AHANLP . wordSimilarity ( "猫" , "狗" ));
System . out . println ( "计算机 | 电脑 : " + AHANLP . wordSimilarity ( "计算机" , "电脑" ));
System . out . println ( "计算机 | 男人 : " + AHANLP . wordSimilarity ( "计算机" , "男人" ));
String s1 = "苏州有多条公路正在施工,造成局部地区汽车行驶非常缓慢。" ;
String s2 = "苏州最近有多条公路在施工,导致部分地区交通拥堵,汽车难以通行。" ;
String s3 = "苏州是一座美丽的城市,四季分明,雨量充沛。" ;
System . out . println ( "s1 | s1 : " + AHANLP . sentenceSimilarity ( s1 , s1 ));
System . out . println ( "s1 | s2 : " + AHANLP . sentenceSimilarity ( s1 , s2 ));
System . out . println ( "s1 | s3 : " + AHANLP . sentenceSimilarity ( s1 , s3 ));
/*
猫 | 狗 : 0.71021223
计算机 | 电脑 : 0.64130974
计算机 | 男人 : -0.013071457
s1 | s1 : 1.0
s1 | s2 : 0.6512632
s1 | s3 : 0.3648093
*/ WordImilarity และ SentencesImilarity เป็นฟังก์ชั่นที่คำนวณความคล้ายคลึงกันของคำและประโยคตามลำดับ กระบวนการคำนวณใช้คำว่าเวกเตอร์ที่ได้รับการฝึกฝนล่วงหน้าโดยโมเดล Word2VEC ก่อนใช้งานคุณจะต้องดาวน์โหลดโมเดล Word2vec จากนั้นจัดเก็บไฟล์โมเดลที่บีบอัดใน data/model/ ไดเรกทอรีของโครงการ ความคล้ายคลึงกันของ Word ถูกคำนวณโดยตรงโดยการคำนวณค่า cosine ของคำเวกเตอร์ คุณสามารถอ้างถึง Word2vec/ปัญหา 1 สำหรับวิธีการรับประโยคที่คล้ายคลึงกัน หากคุณต้องการฝึกอบรม Word2vec รุ่นด้วยตัวคุณเองคุณสามารถอ้างถึงการฝึกอบรมรุ่นของ Google เวอร์ชัน
หมายเหตุ: SESTENCEIMALLITY ใช้การแบ่งส่วนคำมาตรฐานเป็นเซ็กเมนต์ประโยคตามค่าเริ่มต้นและกรองคำหยุดคำ
String sentence = "全球最大石油生产商沙特阿美(Saudi Aramco)周三(7月21日)证实,公司的一些文件遭泄露。" ;
List < SRLPredicate > predicateList = AHANLP . SRL ( sentence );
for ( SRLPredicate p : predicateList ) {
System . out . print ( "谓词: " + p . getPredicate ());
System . out . print ( " t t句内偏移量: " + p . getLocalOffset ());
System . out . print ( " t句内索引: [" + p . getLocalIdxs ()[ 0 ] + ", " + p . getLocalIdxs ()[ 1 ] + "] n " );
for ( Arg arg : p . getArguments ()) {
System . out . print ( " t " + arg . getLabel () + ": " + arg . getSpan ());
System . out . print ( " t t句内偏移量: " + arg . getLocalOffset ());
System . out . print ( " t句内索引: [" + arg . getLocalIdxs ()[ 0 ] + ", " + arg . getLocalIdxs ()[ 1 ] + "] n " );
}
System . out . println ();
}
/*
谓词: 证实 句内偏移量: 36 句内索引: [36, 37]
TMP: 周三(7月21日) 句内偏移量: 27 句内索引: [27, 35]
A0: 全球最大石油生产商沙特阿美(Saudi Aramco) 句内偏移量: 0 句内索引: [0, 26]
A1: 公司的一些文件遭泄露 句内偏移量: 39 句内索引: [39, 48]
谓词: 遭 句内偏移量: 46 句内索引: [46, 46]
A0: 公司的一些文件 句内偏移量: 39 句内索引: [39, 45]
A1: 泄露 句内偏移量: 47 句内索引: [47, 48]
*/ ส่วนประกอบ SRL ใน Mate-Tools (รวมถึงการจำแนกส่วนหนึ่งของการพูดและตัววิเคราะห์ไวยากรณ์ขึ้นอยู่กับ) สามารถระบุ predicate ในข้อความและอาร์กิวเมนต์ที่สอดคล้องกันได้: Agent A0 , A1, A1 , Time TMP และ LOC ตำแหน่ง เพิ่มการสนับสนุนสำหรับข้อความยาว SRLPARSECONTENT (เนื้อหา) และการจับคู่ข้อความที่ตรงกันซึ่งสามารถวางตำแหน่งผ่านตำแหน่งและออฟเซ็ตของเพรดิเคตและอาร์กิวเมนต์ในข้อความ
หมายเหตุ: เพรดิเคตแต่ละอันสอดคล้องกับอาร์กิวเมนต์มากกว่าหนึ่งข้อในหมวดหมู่ที่แน่นอนตัวอย่างเช่น "การโจมตี" เพรดิเคตสามารถสอดคล้องกับตัวกระตุ้นหลายตัว A0 (ผู้โจมตี)
int topicNum510 = AHANLP . topicInference ( "data/mini/军事_510.txt" );
System . out . println ( "军事_510.txt 最可能的主题号为: " + topicNum510 );
int topicNum610 = AHANLP . topicInference ( "data/mini/军事_610.txt" );
System . out . println ( "军事_610.txt 最可能的主题号为: " + topicNum610 );การทำนายหัวข้อ LDA โดยค่าเริ่มต้นรูปแบบ LDA ข่าวใช้ในการทำนายหัวข้อและหมายเลขหัวข้อที่มีความน่าจะเป็นสูงสุดคือเอาต์พุต รุ่นเริ่มต้นได้รับการฝึกอบรมจาก 1,000 (อาจไม่พอใจ) ข่าวจากแต่ละหมวดหมู่ใน Sogou News Corpus (Sogoucs) โดยมีทั้งหมด 100 หัวข้อ
ผู้ใช้ยังสามารถฝึกอบรมโมเดล LDA ด้วยตนเองผ่าน ZHNLP.trainLDAModel() หลังจากการฝึกอบรมพวกเขาสามารถใช้วิธี topicInference มากเกินไปเพื่อโหลด
AHANLP . trainLDAModel ( "data/mini/" , 10 , "data/model/testLDA.model" );
int topicNum710 = AHANLP . topicInference ( "data/model/testLDA.model" , "data/mini/军事_710.txt" );
System . out . println ( "军事_710.txt 最可能的主题号为: " + topicNum710 );
int topicNum810 = AHANLP . topicInference ( "data/model/testLDA.model" , "data/mini/军事_810.txt" );
System . out . println ( "军事_810.txt 最可能的主题号为: " + topicNum810 ); หากคุณต้องการเรียกใช้ ldademo.java สำหรับการทดสอบคุณต้องดาวน์โหลด sogouca_mini และจัดเก็บโฟลเดอร์ mini สกัดใน data/ ไดเรกทอรีของโครงการ
String tc = AHANLP . convertSC2TC ( "用笔记本电脑写程序" );
System . out . println ( tc );
String sc = AHANLP . convertTC2SC ( "「以後等妳當上皇后,就能買士多啤梨慶祝了」" );
System . out . println ( sc );
/*
用筆記本電腦寫程序
“以后等你当上皇后,就能买草莓庆祝了”
*/ การแปลงภาษาจีนที่เรียบง่ายและแบบดั้งเดิมเป็นเครื่องห่อหุ้มสำหรับวิธี convertToTraditionalChinese และวิธี convertToSimplifiedChinese ใน HANLP มันสามารถระบุคำที่แบ่งระหว่างภาษาจีนที่เรียบง่ายและดั้งเดิมเช่น打印机=印表機และตัวละครหลายตัวที่ไม่สามารถแยกแยะได้ด้วยเครื่องมือแปลงภาษาจีนที่เรียบง่ายและดั้งเดิมเช่น "年年" ใน "年" และ "ราชินี" ทั้งสอง
String document = "我国第二艘航空母舰下水仪式26日上午在中国船舶重工集团公司大连造船厂举行。" + "中共中央政治局委员、中央军委副主席范长龙出席仪式并致辞。9时许,仪式在雄壮的国歌声中开始。"
+ "按照国际惯例,剪彩后进行“掷瓶礼”。随着一瓶香槟酒摔碎舰艏,两舷喷射绚丽彩带,周边船舶一起鸣响汽笛,全场响起热烈掌声。"
+ "航空母舰在拖曳牵引下缓缓移出船坞,停靠码头。第二艘航空母舰由我国自行研制,2013年11月开工,2015年3月开始坞内建造。" + "目前,航空母舰主船体完成建造,动力、电力等主要系统设备安装到位。"
+ "出坞下水是航空母舰建设的重大节点之一,标志着我国自主设计建造航空母舰取得重大阶段性成果。" + "下一步,该航空母舰将按计划进行系统设备调试和舾装施工,并全面开展系泊试验。"
+ "海军、中船重工集团领导沈金龙、苗华、胡问鸣以及军地有关部门领导和科研人员、干部职工、参建官兵代表等参加仪式。" ;
List < String > wordList = AHANLP . getWordList ( AHANLP . StandardSegment ( document , true ));
WordCloud wc = new WordCloud ( wordList );
try {
wc . createImage ( "D: \ test.png" );
} catch ( IOException e ) {
e . printStackTrace ();
} WordCloud ใช้รายการ Word เพื่อสร้างวัตถุ WordCloud จากนั้นเรียกใช้เมธอด createImage เพื่อสร้างภาพคลาวด์คำและส่งที่อยู่ที่บันทึกไว้ของภาพเป็นพารามิเตอร์ คำว่าคลาวด์วาดขนาดของแต่ละคำตามความถี่ของคำ ความถี่ของคำที่สูงขึ้นยิ่งคำมากขึ้น; สีและตำแหน่งถูกสร้างขึ้นแบบสุ่ม

ขนาดภาพที่สร้างขึ้นเริ่มต้นคือ 500x400 และสีพื้นหลังเป็นสีขาว คุณยังสามารถปรับแต่งสีพื้นหลังและขนาดภาพของภาพ
WordCloud wc = new WordCloud ( wordList );
wc . createImage ( "D: \ test_black.png" , true ); // 黑色背景
wc . createImage ( "D: \ test_1000x800.png" , 1000 , 800 ); // 尺寸 1000x800
wc . createImage ( "D: \ test_1000x800_black.png" , 1000 , 800 , true ); // 尺寸 1000x800, 黑色背景ฉันต้องการจ่ายส่วยให้ผู้เขียนโครงการต่อไปนี้ซึ่งเป็นซอฟต์แวร์โอเพ่นซอร์สเหล่านี้ที่ส่งเสริมการสร้างความนิยมและการประยุกต์ใช้เทคโนโลยีการประมวลผลภาษาธรรมชาติ