构建语言模型(一):文本语料处理

关于语言模型的训练,网上搜索到的基本是理论为主,尤其训练文本的获取和处理,
往往一笔带过。通过项目中的实践经验,整理成文,可能存在疏漏乃至错误。

1. 语言模型概述与流程

1.1 LM概述   

  语言模型(Language Model, LM),是针对某种语言建立的概率模型,目的是建立一个能够描述给定词序列在语言中的出现的概率的分布。

  Ngram模型是最常用的建模技术,采用了马尔科夫假设(马尔科夫假设:一个词的出现仅仅依赖与它前面出现的有限的一个或者几个词。),可表示为p(S)=p(w1,w2,w3,w4,w5,…,wn)=p(w1)p(w2|w1)p(w3|w1,w2)…p(wn|w1,w2,…,wn-1)

  语言模型技术广泛应用于语音识别、OCR、机器翻译、输入法等产品上。语言模型建模过程中,包括词典、语料、模型选择等,对产品的性能有至关重要的影响。
  

1.2 构建整体流程

构建语言模型的流程如下:

LM构建整体流程

  • 利用爬虫从互联网抓取大量网页文本语料
  • 网页文本处理成所需格式
  • 文本训练生成LM

2. 文本语料抓取与处理

2.1 文本抓取

文本抓取过程见之前的文章 使用Scrapy递归爬取网页

2.2 文本处理

  文本处理的目的是,从原始html形式的文本中提取有效数据,并处理成构造语言模型(Language Model)所需要的格式。
  
  步骤如下:

  • 预处理。[包括全半角字符转化,去掉注释、CSS样式、标签(单/多行)、&转义字符、url、大段英文数字、单个非中文词、空格等等]
  • 分词。[可自己开发分词工具,或采用第三方工具,如结巴分词]
  • 纯数字转成中文读音
  • 将中文表示的数字进行拆分,如:一百二十三元 –> 一百 二十 三 元
  • 去掉无用字符,保留中英文字符及部分标点,并按标点分句[可根据需要去掉所有标点]

对于大数据文本的处理,可通过拆分合并,每个文件保持一定的大小,通过多进程并行处理

猜你喜欢

转载自blog.csdn.net/lujian1989/article/details/53587309