# NLP_基础代码集合 **Repository Path**: wanghanhcong/nlp_base_code_set ## Basic Information - **Project Name**: NLP_基础代码集合 - **Description**: 包含一些传统自然语言处理方法和简单的文本深度学习模型 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2021-02-24 - **Last Updated**: 2021-02-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 1 自然语言处理项目 ### 1.1 传统文本处理 - 【 I_NLP_EDA 】:使用 NLTK 、SpaCy 自然语言处理工具包对英文文本进行数据探索性分析,完成英文分词分句、去除停用词、英文词性标注、命名实体识别等基本操作,并对《傲慢与偏见》小说提取书中人名出现频率最高的前 10 个,还对英文恐怖袭击报告进行分析,根据国际恐怖组织和事发地点名称进行统计作出袭击频率表。除此之外,还使用了 JieBa 中文分词器,完成中文分词、自定义词典、关键词提取、中文词性标注等操作,并利用 WordCloud 绘制十九大习主席发言报告的词云图。 - 【 II_NLP_Visualization 】:。 - 【 III_NLP_ClassicalMethods 】: SogouCA 搜狗全网新闻数据集,来自于体育 / 社会 / 娱乐等18个板块的新闻数据,提供了相关 URL 和正文信息。在可视化方面,利用 JieBa 工具包对新闻进行分词和去停用词处理并构建中文语料库,然后送入 LDA 模型中去提取出每类新闻最主要的前 5 个代表词,再根据语料库去计算文本词频后绘制出词云图。在文本分类方面,则对清洗后的新闻文本做 Bag-of-Words 、 TF-IDF 操作,之后将处理好的词袋向量送入贝叶斯分类器中进行分类即可。除此之外,还利用编辑距离完成英文单词拼写检查器。

另外的,对于 HMM 隐马尔科夫模型,在给定初始状态 / 隐藏状态 / 观测状态等模型状态转移矩阵参数的情况下,再给定当前观测序列并采用维特比算法去求解这个观测序列出现的对数概率值,以及预测出下一个隐藏状态的可能值。而在未给定模型参数的情况下,则利用 EM 算法求解模型参数即可。此外,对于股票预测、中文分词也可以用 HMM 模型来完成。

---
### 1.2 深度学习模型 - 【 IV_NLP_FE 】: Disasters on Social Media 推特灾难事件监测数据集,首先利用正则表达式对数据进行清洗,然后根据直方图查看数据样本的分布情况是否均衡,之后使用 NLTK 对英文文本进行分词并构建约 1.8w 词的语料库,完成后再用 Bag-of-Words 词袋模型和 TF-IDF 词频模型将文本转为向量送入 LR 逻辑回归模型中,同时采用 Accuracy / Precision / Recall / F1 作为评价指标,并且利用 PCA 去降维特征画散点图查看不同特征工程操作下的样本其区分度如何。最后,将模型分类结果的混淆矩阵进行可视化展示,并根据模型训练所排序出特征词的权重高低来查看哪些词是分类所关注的。

除此之外,对于社交媒体上讨论关于灾难 / 疾病 / 暴乱等事实或电影情节或玩笑的推文进行鉴别,还可以采用谷歌预训练的 Word2Vec 词向量模型,将清洗好的评论转为 300 维的句子向量,并同样采用 PCA 降维画出散点图查看样本区分度情况,之后再送入到 LR 逻辑回归模型和 CNN 卷积神经网络模型中进行分类即可,评价指标为正确率 Accuracy 。

而对于 IMDb 电影评论情感分类数据集,利用 BeautifulSoup4 对英文短评进行预处理操作,除去 HTML 标签、标点符号以及停用词等等,之后再采用 Bag-of-Words 词袋模型和 Word2Vec 词向量模型分别将评论转为 5000 维和 300 维的句子向量,完成后送入构建的 LR 逻辑回归模型中,使用准确率和召回率作为评测指标,并将分类结果的混淆矩阵进行可视化展示。 - 【 V_NLP_NeuralNetwork 】:。

---
## 2 相关平台及工具包使用 - 【平台】:Jupyter Notebook、PyCharm - 【数据处理包】:NLTK、SpaCy、JieBa、Gensim、Pandas、NumPy、SciPy - 【数据可视化包】:Matplotlib、Seaborn - 【算法工具包】:Scikit-Learn、TensorFlow、Keras、HMMLearn

> 📃请见谅,不知道为什么,用罗马数字作为顺序在这上面显得好乱,对这个文件排序不太满意啊...