自然语言处理NLP算法总结(持续更新)

分词

最大匹配法(机械分词)
n-gram 计算两个单词或者多个单词同时出现的概率
hmm
crf

词性标注

crf

命名实体识别NER

CRF
biLSTM-CRF

关键词提取

tf-idf
textrank 基于PageRank

句法分析、依存关系

词向量

独热编码(one-hot encoder):比如有三个单词“man"、”husband“、”dog“,将之分别表示为[0,0,1],[0,1,0],[1,0,0],这些词向量可以作为机器学习模型的输入数值向量,但是它们难以表达关联性,而且当词库单词量庞大时,独热编码的维度也会十分巨大,给计算和存储带来不少问题。
Word2Vec
GloVec
FastText
WordRank
参考

句子/篇章向量

词袋表示(Bag-of-words model):例如两个句子:”She loves cats.“、”He loves cats too.“ 我们可以构建一个词频字典:{"She": 1, "He": 1, "loves": 2 "cats": 2, "too": 1}。根据这个字典, 我们能将上述两句话重新表达为下述两个向量: [1, 0, 1, 1, 0]和[0, 1, 1, 1, 1],每1维代表对应单词的频率。
Doc2Vec:是 Tomas Mikolov 基于 word2vec 模型提出的,其具有一些优点,比如不用固定句子长度,接受不同长度的句子做训练样本,Doc2vec 是一个无监督学习算法,该算法用于预测一个向量来表示不同的文档,该模型的结构潜在的克服了词袋模型的缺点.论文
其他:参考

文本检索

BM25:一种用来评价搜索词和文档之间相关性的算法,主要就是计算一个query里面所有词和文档的相关度,然后在把分数做累加操作,而每个词的相关度分数主要还是受到tf/idf的影响。参考


R(qi,d)是每个词和文档的相关度值,其中qi代表每个词,d代表相关的文档,Wi是这个词的权重,然后所有词的乘积再做累加。

文本分类

传统机器学习方法:LR、SVM、决策树、...
fasttext
rnn
cnn

机器翻译

文本摘要

textrank
LSTM-attention ref:https://github.com/dongjun-Lee/text-summarization-tensorflow

阅读理解

问答匹配

自动生成

你可能感兴趣的:(自然语言处理NLP算法总结(持续更新))