# NLPTutorial **Repository Path**: lao_tzu/nlptutorial ## Basic Information - **Project Name**: NLPTutorial - **Description**: NLP培训教程 --from lightgogogo - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 5 - **Created**: 2023-03-07 - **Last Updated**: 2026-04-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # NLP Tutorial * 我们的最终目标:**得到自己训练的词向量并且说明你的词向量是有效的** * 这里总共有7个任务需要完成,可以根据情况调整自己的时间,来完成这些任务。 * Suggest reading : ``` https://web.stanford.edu/class/cs224n/ ``` * Project Link: https://gitee.com/lao_tzu/nlptutorial ### task00 : git 的使用: 学会使用git上传代码,拉取代码;学会使用git在gitee中建立自己的代码仓库并把每个阶段的代码提交入库。 ``` first init: $ git clone https://gitee.com/lao_tzu/nlptutorial.git update: $ git pull origin master ``` 本教程的目标:得到我们自己训练的词向量。 下面你的工作将按照一个个任务的形式展开,每个任务完成的标志就是达到Requirements中的结果。 ### task01 : nlp hello world * Requirements: 1. 学习在linux上面如何配置python环境,学会使用anaconda管理环境; 2. 跑通task01中的脚本,尝试自己聊一下天; 3. 测试README中要求的词语和句子,把结果记录在a1.txt中,可以自己查阅关于word2vec的资料,写下自己的感想。 * Suggest reading: ``` https://www.cnblogs.com/Sunny-King/p/Bioinformatics-Conda.html https://blog.csdn.net/sinat_38189533/article/details/111317016 https://medium.com/analytics-vidhya/word-embeddings-in-nlp-word2vec-glove-fasttext-24d4d4286a73 glove数据集下载链接: https://nlp.stanford.edu/projects/glove/ ``` ### task02 : 数据处理。 在这一个任务中,你需要自己动手来写代码了。 既然是NLP任务,那么我们应该就需要有语料来做处理。这些语料一般都是在网上找到的,比如说微博评论数据、维基百科的文字、聊天软件的数据等等,那么我们需要对这些原始的信息进行一个处理,得到我们想要的信息。 (角色问题是在task08中需要解决的,所以本任务在character字段可以设置为null) * Requirements: 1. 学习如何编写python代码,实现把语料文本转化为我们想要的数据格式在task02-get_dataset中有提到。 2. 使用test_my_data.py来测试一下自己转换的数据格式是否正确。 * Suggest Reading: ``` python语法规范参考: https://google.github.io/styleguide/pyguide.html 题外话,关于语料《与神对话》: https://www.zhihu.com/question/23221312/answer/71591941 ``` ### task03 : bag-of-words 在本任务中,我们就要开始利用之前生成的数据集进行操作了。 注意:需要把词语分成字母块、数字块、符号块 * Tips: 示范数据集已经在本项目中,你可以选择自己在Task02中得到的数据集来完成本任务,也可以直接使用已有的数据集。 * Requirements: 1. 使用bag-of-words来对语料中的每个sentence、每个chapter、整个book进行表征。 2. 挑出你认为比较合适的,能够表征你所挑选的文段的bag-of-words例子。 * Suggest Reading: ``` https://towardsdatascience.com/a-simple-explanation-of-the-bag-of-words-model-b88fc4f4971 ``` ### task04 : co-occurrence matrix。 ``` https://blog.csdn.net/Hunter_Murphy/article/details/107394973 https://www.nltk.org/book_1ed/ch05.html ``` * Requirements: 1. 使用得到的词向量绘画出词向量在二维平面上面的分布图 1.1 推荐使用 bokeh 库,可以可视化到 html 文件上面,通过$ python -m http.server [port] 在浏览器中查看。 2. 使用得到的词向量进行svm训练(标注词汇),与随机的词向量进行对比,观察分解出来的词向量效果是否比随机的词向量效果要好 (这一步可以留到task07一起进行评估) 3. 有什么更简单直接的方式进行量化评估? ### task05\* : 学习cbow,skipgram两种word2vec的概念,做出相应的数学推导题(sgd)。 这一步如果遇到困难可以跳过,在后面写代码的过程中补充相关的知识。 ### task06 : train word2vec ``` 本任务的重点部分,需要你自己思考如何构造输入输出,如何构造loss,编写出训练词向量的代码 ``` * Requirements: 1. 除了loss,你还需要的是构造acc指标 2. 把各种指标(学习率、loss、acc等等)按照训练的过程显示到tensorboard上面 ### task07 : evaluate word2vec ``` https://www.nltk.org/book_1ed/ch05.html ``` * Requirements: 1. 使用得到的词向量绘画出词向量在二维平面上面的分布图 2. 对词向量进行聚类,展示出聚类的结果 3. 使用得到的词向量进行svm训练(标注词汇fintuning),与随机的词向量进行对比,观察分解出来的词向量效果是否比随机的词向量效果要好 ### task08 : text classification: 之前我们在task02中并没有得到对话的角色信息,现在请发挥你的想象力,利用nlp技术,得到文本每一句话的角色信息,得到之后,将会有标准答案对你所得到的进行打分。