语言模型,lm¶
1.训练数据¶
就普通的文本格式
训练数据示例如下:
第一章 陨落的天才
“斗之力,三段!”
望着测验魔石碑上面闪亮得甚至有些刺眼的五个大字,少年面无表情,唇角有着一抹自嘲,紧握的手掌,因为大力,而导致略微尖锐的指甲深深的刺进了掌心之中,带来一阵阵钻心的疼痛……
“萧炎,斗之力,三段!级别:低级!”测验魔石碑之旁,一位中年男子,看了一眼碑上所显示出来的信息,语气漠然的将之公布了出来……
中年男子话刚刚脱口,便是不出意外的在人头汹涌的广场上带起了一阵嘲讽的骚动。
“三段?嘿嘿,果然不出我所料,这个“天才”这一年又是在原地踏步!”
“哎,这废物真是把家族的脸都给丢光了。”
“要不是族长是他的父亲,这种废物,早就被驱赶出家族,任其自生自灭了,哪还有机会待在家族中白吃白喝。”
“唉,昔年那名闻乌坦城的天才少年,如今怎么落魄成这般模样了啊?”
2.使用示例¶
训练¶
from lightnlp.tg import LM
lm_model = LM()
train_path = '/home/lightsmile/NLP/corpus/lm_test.txt'
dev_path = '/home/lightsmile/NLP/corpus/lm_test.txt'
vec_path = '/home/lightsmile/NLP/embedding/char/token_vec_300.bin'
lm_model.train(train_path, vectors_path=vec_path, dev_path=train_path, save_path='./lm_saves')
测试¶
lm_model.load('./lm_saves')
lm_model.test(dev_path)
预测¶
文本生成¶
默认生成30个
print(lm_model.generate_sentence('少年面无表情,唇角有着一抹自嘲'))
结果:
少年面无表情,唇角有着一抹自嘲,紧握的手掌,因,无所谓的面上,那抹讥讽所莫下了脚步,当时的
得到给定上文下,下一个字的topK候选集及其概率¶
默认输出top5个
print(lm_model.next_word_topk('少年面无表情,唇角'))
结果:
[('有', 0.9791949987411499), ('一', 0.006628755945712328), ('不', 0.004853296559303999), ('出', 0.0026260288432240486), ('狠', 0.0017451468156650662)]
评估语句分数¶
结果为以10为底的对数,即log10(x)
print(lm_model.sentence_score('少年面无表情,唇角有着一抹自嘲'))
结果:
-11.04862759023672