当前位置:   article > 正文

山大NLP实验1_山东大学 nlp

山东大学 nlp

实验内容:

1.用python编程实践语言模型(uni-gram和bi-gram),加入平滑技术。

2.计算test.txt中句子的PPL,对比uni-gram和bi-gram语言模型效果。

问题1:

程序运行速度很慢,特别是 bi-gram阶段,耗费较多时间。

解答:原本的程序是每次向函数中传入一个测试语句,然后对整体词典进行一次平滑处理操作。且使用实参传入时需要使用 copy函数。尤其是在进行 bi-gram过程时,需要使用 deepcopy函数,非常慢。之后直接对整个 test文本进行一次平滑操作。前后结果基本没有发生变化。

问题2:由于这里是对词进行处理,可能相同的词存在不同的大小写,而且对于句子中的标点符号该怎么处理?

解答:Python 、python、PYTHON这些词应该都属于一个词,所以应该将每个词都转换成小写来处理。而且对于句子中的标点符号应该删除。

问题3:

列表和字典作为实参传入函数时,在函数体内部改变形参,会导致实参也发生改变。

解决:一维列表传入使用list.copy(),二维字典传入使用 copy.deepcopy(dict)

问题4:

bi-gram的概率计算方式和平滑处理方式不合适,导致困惑度偏大

解答:

给句子添加首位,令 abc变成 begin abc end。这样的话,我们统计的时候,就可以仅统计 P(a|b)形式的词频就好了,因为 P(begin abc end) = P(begin)P(a|begin)P(b|a)P(c|b)P(end|c)。一句话的开头, P(begin) = 1。所以可以写成 P(begin abc end) = P(a|begin)P(b|a)P(c|b)P(end|c)。全是 P(a|b)形式,容易平滑和处理.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/397420
推荐阅读
相关标签
  

闽ICP备14008679号