nlp备份集合
自然语言处理(nlp)在内容中起着关键作用,以下是在学习和实践应用中涉及到的一些点,记录下方便查询和修缮,其中的缺陷或者不足欢迎邮件一起探讨研究,其中涉及的开源技术如需使用到,请遵照它们各自的开源技术协议。
nlp开端
语言是文字的组织,从字、词、短语、句子、段落、摘要、篇章等粒度,组织后展现出来需要依照句法结构、依存关系等。
在中文语言处理中,不可或缺的是分词技术、抽取技术,其他的技术可以从此产生。
分词可以使用各种开源框架,也可以自定义写,方法有多种匹配、隐马尔可夫、神经网络等,个人认为采取隐马尔可夫和词典自定义的方法比较好些,当然根据应用的场景,对分词的粗细要求来选取即可。
抽取,包括短语的抽取,关键字的抽取,摘要的抽取,从篇章中抽取出重要的成分,注意与生成区分,提取是从大集合中抽取出小集合;抽取的方法已知的有textrank,与pagerank的形式同理,其他的未做过深入研究。
应用
自然语言处理的应用很广,很细,小到一个分词的服务,大到如资讯个性化推荐等。各个互联网做内容的会根据自己的优势,设计自己的平台服务,这里归为如下几个大类:
搭配
搭配用在对象与修饰的应用场景下,中文的句子(有实意的)应当含有实体+修饰成分,不然理解不了句子的含义,因此能够找出实体的修饰成分,就可以读懂句子的意思。
这种应用主要在评论分析、舆情监控等对实体和情感应用强的背景里。
所用的技术已知的有条件随机场。
提取
提取短语,提取关键字,提取摘要,是对篇章进行缩减,对篇章进行主成分分析的一种方式,在内容流中可以起到压缩文本的作用。
另外,对于搜索也帮助很大,可以把内容映射成提取出的关键字(词语/句子),在搜索时提升召回率。
在推荐时,相当于有粗的标签,给用户推荐时能够匹配到喜好,实现上又可以减少存储空间。
已知所用的技术有pagerank,tf-idf等。
生成
自动生成句子,段落,文章,是很火的领域,也是最有价值的方向,可以减少大量人力。
英文的版本可根据提供的关键单词写出一篇原创的文章;中文下可以根据提供的字或词,写出一篇宋词或唐诗。在新闻下,可以根据固定的模板写出报道….
这些应用的背后基于语言的生成,但是目前写出与人相近深度的文章还未达到,这些实现的背后基于统计概率,基于模板填充等。
宋词有固定的字数,固定的韵脚,可以统计词来实现,即根据第一个给定的词,依次从后续找到下一个词或上一个词,类似于做填空题;
唐诗与宋词类似,固定了字数,但是可以做到生成一句后,不在继续,然后把已生成的作为基准进行下一个生成,做到上下文语境,这样操作需要大量的运行时间,相当于4句诗,需要4个模型,另外需要人工去挑选最好的。
报道,目前都是短讯报道,没有像解读报道那样子长,短讯报道有固定的模板,只需填入重要的信息即可。
然而,目前很多神经网络序列模型,可以根据上下文(前后5个词)来得到生成模型,依次推断下一个词;或者根据写草稿形式,在候选的训练集中挑选组织新的表达文字。
生成依赖的是训练集,生成短句,固定模式文本已经实现,长篇文章还需进一步发展,以及需要更大的保存结构,保存词之间的领域概率;在构建词与词之间的领域权重,这是一个值得研究的方向。
图谱
图谱,与族谱类似,把开端以及中间的节点进行详细记录,便于查找源和check节点之间的关联性。
图谱在实际应用中,个人觉得有价值在于意向图谱,可以识别用户的下一步意向,这在内容中可以用于推荐,在搜索中提高命中率。
但,图谱本人学习和研究不深,这里没有太多的深度东西。
必须确定的是,图谱在内容中将会是一大高点,能够构建个人的图谱,尤其是意向图谱,在未来空间很大。
实践
目前实践使用到的最多是分词,各个业务线用到的细点很多,也不断在做整合,提供服务,以及便利化后续应用。
分词
分词可以使用开源技术,当然这个开源技术要切合自己实际架构,融合起来能够方便,可以自定义修改。当前本人使用的已经可以融合到spark和flink中,运行正常。对各大文本内容进行分词,得到word2vec的训练集合,得到地理位置信息匹配,得到关键搜索句子的匹配,得到内容质量的打分等等。
相似判断
句子之间的相似判断,可能最多想到的是MD5做指纹,然后采取相似系数计算,这是快捷也是成本最小的。为了体现nlp,以及丰富性,可以用tf-idf以及word2vec来计算。需要提的tf-idf计算需要全量计算一遍,而在计算两两之间的相似性时只需增量计算即可,另外,tf-idf是可以用稀疏向量存储的,计算时间大大加快。
word2vec其实是单个词的嵌入向量,如何做到句子的级别,一是句子重新训练,得到句子级别的嵌入向量,而是根据词的向量进行计算得到句子的向量。
值得注意的是,word2vec得到的向量是密集型向量,计算相似性时非常非常非常慢,加快的方法是对句子的向量进行缩减,比如成分分析,特征挑选,本地哈希,目的是缩减嵌入向量的维,而不失去代表性。当然,也可以做到增量计算。
feed流匹配
内容的盈利途径是广告点击率,提升广告点击率的方式有多种,在nlp领域,能够做到的一点是,把内容的针对性关键字与广告的显眼字进行匹配投放,以加大目标匹配度。比如在文章内提取带地理位置信息等字样,与投放的广告进行比对,而不浪费盲目投放的概率。
内容质量打分
好的内容能够得到更多的点击,好的内容粘性很强,所以,好的内容优先展示,给到更大的曝光机会是必要的,也是必须的。对内容的打分,需要考量的是内容本身,提供内容的作者,以及展示出来的点击效果,从三方维度进行score得到的质量具有代表性,但不是唯一性。
提取和生成
提取主要针特定的业务背景,提取出关注的词类型,以便针对性判断,这里可以用简单的正则或者统计实现;
生成,可以借鉴宋词的方式,固定下句子的格式,从而依照给定的词挨个给出。比如固定句子的词性排列;而选取时采取的是下一个词的最大或随机概率,这样简单的实现生成一篇文章,虽然内容上不知所云,但是,加上句法和语法的限制,相信是可以进一步提升的。
最后的话
自然语言处理是本人在实验室开始就小鼓捣的一个方向,不断地在整合各个模块,把它们做成便利化,希望能够提供服务,目前只是方便自己在业务中减少工作量,或者接收其他辅助需求。