PyTorch 深度学习实战
方远
LINE China 数据科学家
10381 人已学习
新⼈⾸单¥59
登录后,你可以任选3讲全文学习
课程目录
已完结/共 32 讲
开篇词 (1讲)
PyTorch 深度学习实战
15
15
1.0x
00:00/00:00
登录|注册

21 | NLP基础(上):详解自然语言处理原理与常用算法

你好,我是方远。
在之前的课程中,我们一同学习了图像分类、图像分割的相关方法,还通过实战项目小试牛刀,学完这部分内容,相信你已经对深度学习图像算法有了一个较为深入的理解。
然而在实际的项目中,除了图像算法,还有一个大的问题类型,就是文字或者说语言相关的算法。这一类让程序理解人类语言表达的算法或处理方法,我们统称为自然语言处理(Natural Language Processing, NLP)。
这节课,我们先来学习自然语言处理的原理和常用算法,通过这一部分的学习,以后你遇到一些常见的 NLP 问题,很容易就能想出自己的解决办法。不必担心原理、算法的内容太过理论化,我会结合自己的经验从实际应用的角度,为你建立对 NLP 的整体认知。

NLP 的应用无处不在

NLP 研究的领域非常广泛,凡是跟语言学有关的内容都属于 NLP 的范畴。一般来说,较为多见的语言学的方向包括:词干提取、词形还原、分词、词性标注、命名实体识别、语义消歧、句法分析、指代消解、篇章分析等方面。
看到这里,你可能感觉这些似乎有点太学术、太专业了,涉及语言的结构、构成甚至是性质方面的研究了。没错,这些都是 NLP 研究在语言学中的应用方面,就会给人一种比较偏研究的感觉。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了自然语言处理(NLP)领域的重要内容,包括文本表示方法和关键词提取。在文本表示方面,传统机器学习算法使用了各种文本表示方法,如独热表示法和count-based表示方法,以及基于统计特征、词图模型和主题模型的关键词提取方法。文章重点介绍了TF-IDF方法和TextRank算法,并提供了相应的代码示例。此外,还介绍了jieba工具的集成算法用于关键词提取。总的来说,本文通过简洁明了的语言和丰富的技术细节,为读者提供了快速了解NLP原理和常用算法的基础认知和实践经验。文章还提到了LDA模型的训练过程和NLP的应用场景,强调了工具的使用需要理解其内部原理。同时,鼓励读者在课后深入了解jieba、gensim和NLTK等工具的具体使用和功能,以及Word Embedding的训练生成和使用。整体而言,本文为读者提供了全面的NLP基础知识和实践指导,是一篇值得深入阅读和学习的技术文章。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《PyTorch 深度学习实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(13)

  • 最新
  • 精选
  • Zeurd
    TF-IDF因为各种问题,比如文章长度问题,长的文章一个词出现的次数肯定比短的来的多,又比如都是经济学的文章,一个出现80次,一个出现100次,不能代表100次的那个比80次的有用25%,存在边际效用递减的问题,所以一般会对文章数量做指数化以及归一化处理,尽可能减小误差

    作者回复: 👍🏻👍🏻👍🏻👍🏻👍🏻👍🏻 ^^ 加油~

    2022-04-26
    2
    5
  • John(易筋)
    tf-idf的理论依据及不足 编辑 tf-idf算法是建立在这样一个假设之上的:对区别文档最有意义的词语应该是那些在文档中出现频率高,而在整个文档集合的其他文档中出现频率少的词语,所以如果特征空间坐标系取tf词频作为测度,就可以体现同类文本的特点。另外考虑到单词区别不同类别的能力,tf-idf法认为一个单词出现的文本频数越小,它区别不同类别文本的能力就越大。因此引入了逆文本频度idf的概念,以tf和idf的乘积作为特征空间坐标系的取值测度,并用它完成对权值tf的调整,调整权值的目的在于突出重要单词,抑制次要单词。但是在本质上idf是一种试图抑制雜訊的加权,并且单纯地认为文本頻率小的单词就越重要,文本頻率大的单词就越无用,显然这并不是完全正确的。idf的简单结构并不能有效地反映单词的重要程度和特征词的分布情况,使其无法很好地完成对权值调整的功能,所以tf-idf法的精度并不是很高。 此外,在tf-idf算法中并没有体现出单词的位置信息,对于Web文档而言,权重的计算方法应该体现出HTML的结构特征。特征词在不同的标记符中对文章内容的反映程度不同,其权重的计算方法也应不同。因此应该对于处于网页不同位置的特征词分别赋予不同的系数,然后乘以特征词的词频,以提高文本表示的效果。 -- 维基百科

    作者回复: 👍🏻👍🏻👍🏻^^

    2022-08-25归属地:北京
    3
  • 林于翔
    from nltk import word_tokenize from nltk import TextCollection sents=['i like jike','i want to eat apple','i like lady gaga'] # 首先进行分词 sents=[word_tokenize(sent) for sent in sents] # 构建语料库 corpus=TextCollection(sents) # 计算IDF idf=corpus.idf('like') print(idf)#0.4054651081081644 请问这个idf值应该怎么算呢?如果按照公式,文档总数为3, 包含词条‘like’的文档数为2,分母再加上1,那么idf=ln(3/(2+1)=0?? 为什么会跟结果不符合呢?

    作者回复: hello,林于翔。谢谢留言。 idf的计算,实际上就是“包含该词语的文件的数目除以总文件数目”,本身是没有+1操作的,+1是为了防止出现分母为0的情况而做的平滑。实际情况下,语料的数量很庞大,所以“分母为零”的情况要远多于“分母+1=分子”的情况,所以就成了我们更多的使用普遍形式,即+1。而在文章的代码例子中,我特意选择的就是后面的情况,意在告诉大家,写代码要根据实际情况来进行边缘条件的判断。

    2021-12-16
    1
  • John(易筋)
    方老师,最后一段代码有误,for少了in, input_content 应该是texts。修正后如下 from gensim import corpora, models import jieba.posseg as jp import jieba texts = [line.strip() for line in open('input.txt', 'r')] # 老规矩,先分词 words_list = [] for text in texts: words = [w.word for w in jp.cut(text)] words_list.append(words) # 构建文本统计信息, 遍历所有的文本,为每个不重复的单词分配序列id,同时收集该单词出现的次数 dictionary = corpora.Dictionary(words_list) # 构建语料,将dictionary转化为一个词袋。 # corpus是一个向量的列表,向量的个数就是文档数。你可以输出看一下它内部的结构是怎样的。 corpus = [dictionary.doc2bow(words) for words in words_list] # 开始训练LDA模型 lda_model = models.ldamodel.LdaModel(corpus=corpus, num_topics=8, id2word=dictionary, passes=10)

    作者回复: 好的,多谢。我看一下。👍🏻👍🏻👍🏻👍🏻👍🏻👍🏻

    2022-09-09归属地:北京
  • 思勇
    LDA模型示例无法跑通,从网上找了一个,可以跑: https://zhuanlan.zhihu.com/p/134161509

    作者回复: 你好,感谢留言。 具体是提示什么错误呢?

    2022-06-22
  • 亚林
    nltk 计算TF-IDF的时候,如果是无限个文档或是很大量的文档,这改怎么玩类

    作者回复: tf-idf本身是基于统计值的一个过程,所以能够处理极大量的文档。但是在另一方面,大量的文档会带来更多的term,但是这个term量在单一语言中也是有一个理论上限的,并不会特别巨大。放到更广泛的情况下,例如你用tf-idf做nlp之外的的任务,那么term的量就会变得非常非常大,这个时候你就需要对数据做采样逼近,或者使用分布式等方法进行统计。

    2022-05-31
  • 只用TF-IDF的话,在不设置停用词的情况,有很多常见的冠词还有谓语动词出现的次数会非常高,比如 is the ,或者汉语“是”,“我”等。而在研究段落主题或者文章含义的时候,这些词实际含义并不大,所以在使用TF-IDF之前需要对文本进行一些预处理。
    2021-11-30
    5
  • Sam Wang
    TFIDF缺少了semantic meaning
    2021-12-10
    2
  • ifelse
    学习打卡
    2023-12-10归属地:浙江
  • Matthew
    离线下载安装NLTK的nltk_data数据包: https://blog.csdn.net/qq_43140627/article/details/103895811 其中,tokenizers/ 下的 punkt.zip 需要解压缩
    2023-03-07归属地:江苏
收起评论
显示
设置
留言
13
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部