NLP预处理

英语:


https://easyai.tech/ai-definition/stemming-lemmatisation/#weizhi

1.去杂乱:

1.1 转化为小写字母

1.2 数字转化为words 或者移除数字

1.3 移除标点符号其他字符

1.4 展开缩写

2.分词tokenization

2.1 分词 

nltk.tokenize.word_tokenize

2.3 去停用词

在英文中,例如,"a","the",“to",“their”等冠词,借此,代词..... 我们可以直接用nltk中提供的英文停用词表

3.词干提取stemming



import nltk.stem.porteraspt

import nltk.stem.lancasteraslc

importnltk.stem.snowballassb

("----------词干提取-------------")

# 在名词和动词中,除了与数和时态有关的成分以外的核心成分。

# 词干并不一定是合法的单词

pt_stemmer = pt.PorterStemmer() # 波特词干提取器

lc_stemmer = lc.LancasterStemmer() # 兰卡斯词干提取器

sb_stemmer = sb.SnowballStemmer("english")# 思诺博词干提取器

4.词形还原Lemmatization


from nltk.stem import WordNetLemmatizer

lemma = WordNetLemmatizer()

lemma_word = lemma.lemmatize(tokens[index])

5.P-O-S(Part-of-speech)提取词性特征

词性标记旨在根据其定义和上下文,将语音部分分配给给定文本的每个词(例如名词,动词,形容词和其他词)。

常用HMM来构建模型

6.特征工程

6.1 词袋模型Bag of Words

BOW:

CountVectorizer()每个单词为一个label,向量为计数


TF-IDF:Term Frequency-Inverse Document Frequency

from sklearn.feature_extraction.text import TfidfVectorizer




6.2 N-gram

几个相邻有序单词的联合量

"I love deep learning",可以分解的 Bi-gram 和 Tri-gram :

Bi-gram : {I, love}, {love, deep}, {love, deep}, {deep, learning}

Tri-gram : {I, love, deep}, {love, deep, learning}

6.3 Word2vec词向量

https://www.sohu.com/a/128794834_211120

Word2vec 是一种用于从原始文本中学习词嵌入的模型,它有很高的计算效率。

因为word2vector模型的得到的是词向量,如何表示句子呢?最简单的方法就是,将每个句子中的词向量相加取平均值,即每个句子的平均词向量来表示句子的向量。

如果是用一个词语作为输入,来预测它周围的上下文,那这个模型叫做『Skip-gram 模型』

做法是,将一个词所在的上下文中的词作为输出,而那个词本身作为输入,也就是说,给出一个词,希望预测可能出现的上下文的词。通过在一个大的语料库训练,得到一个从输入层到隐含层的权重模型。如下图所示,第l个词的上下文词是i,j,k,那么i,j,k作为输出,它们所在的词汇表中的位置的值置为1。然后,输入是l,把它所在的词汇表中的位置的值置为1。训练完成后,就得到了每个词到隐含层的每个维度的权重,就是每个词的向量。

而如果是拿一个词语的上下文作为输入,来预测这个词语本身,则是 『CBOW 模型

CBOW,它的做法是,将一个词所在的上下文中的词作为输入,而那个词本身作为输出,也就是说,看到一个上下文,希望大概能猜出这个词和它的意思。通过在一个大的语料库训练,得到一个从输入层到隐含层的权重模型。如下图所示,第l个词的上下文词是i,j,k,那么i,j,k作为输入,它们所在的词汇表中的位置的值置为1。然后,输出是l,把它所在的词汇表中的位置的值置为1。训练完成后,就得到了每个词到隐含层的每个维度的权重,就是每个词的向量。


将corpus的one-hot向量(模型的输入)转换成低维词向量(模型的中间产物,更具体来说是输入权重矩阵)

6.4 LDA主题生成模型

它是一种典型的词袋模型,即一篇文档是由一组词构成,词与词之间没有先后顺序的关系

https://blog.csdn.net/v_july_v/article/details/41209515


中文与英语的区别:

1.分词: 中文需要特定的语料库

2.英文需要stemming 跟Lemmatization

3.词性标注差异

https://zhuanlan.zhihu.com/p/59838270


词干提取与词形还原区别:

词干提取只是删除后缀,词干并不一定是合法的单词, 词形还原是还原成词根.

词干提取更多被应用于信息检索领域,如Solr、Lucene等,用于扩展检索,粒度较粗。词形还原更主要被应用于文本挖掘、自然语言处理,用于更细粒度、更为准确的文本分析和表达

参考网站:

'20+ POPULAR NLP TEXT PREPROCESSING TECHNIQUES IMPLEMENTATION IN PYTHON' https://dataaspirant.com/nlp-text-preprocessing-techniques-implementation-python/#t-1600081660732

https://my.oschina.net/u/4332712/blog/3670292

包含各种库 https://medium.com/@datamonsters/text-preprocessing-in-python-steps-tools-and-examples-bf025f872908

词袋模型 https://blog.csdn.net/u012328159/article/details/84719494

word2vec https://zhuanlan.zhihu.com/p/26306795

https://www.sohu.com/a/128794834_211120

你可能感兴趣的:(NLP预处理)