• (一)NLP基础知识

    2018-05-24 16:46:15
    一种流行的自然语言处理库、自带语料库、具有分类,分词等很多功能,国外使用者居多,类似中文的jieba处理库 2、文本处理流程 3、分词 英文用NLTK,中文用jieba等,比较难处理时候,可能得借助正则表达式。 4...

    1、NLTK

    一种流行的自然语言处理库、自带语料库、具有分类,分词等很多功能,国外使用者居多,类似中文的jieba处理库

    2、文本处理流程

    文本处理流程

    3、分词

    英文用NLTK,中文用jieba等,比较难处理时候,可能得借助正则表达式。

    4、复杂的词形

    处理数据的时候可能需要变化词形,分2中情况:
    1)Inflection变化:不影响词性
    walkwalkingwalked
    2) derivation 引申:影响词性
    nation(n.)national(adj.)nationalize(v.)

    5、词形归一化

    1)Stemming词干提取:把不影响词性的后缀去掉
    walkingwalk
    walkedwalk
    (依旧是动词)
    2)Lemmatization词形归一:把各类型的词变形,归一
    went归一=go
    are归一=be
    这里写图片描述
    这里写图片描述

    3)Lemma出现的问题(借助词性标注完成)

    Went v.go的过去式 n.英文名:温特
    这里写图片描述

    6、去除停用词

    中文有:的、地…
    英文有:the 、this…

    总结:文本预处理流水线

    这里写图片描述

    展开全文
  • NLP基础知识(一)

    2020-02-24 16:42:15
    分词是信息检索、文本分类、情感分析等多项中文自然语言处理任务的基础。 词性标注(Part-of-speech Tagging, POS)是给句子中每个词一个词性类别的任务。 这里的词性类别可能是名词、动词、形容词或其他。 下面的...

    在这里插入图片描述
    在这里插入图片描述
    中文分词 (Word Segmentation, WS) 指的是将汉字序列切分成词序列。 因为在汉语中,词是承载语义的最基本的单元。分词是信息检索、文本分类、情感分析等多项中文自然语言处理任务的基础。
    在这里插入图片描述
    词性标注(Part-of-speech Tagging, POS)是给句子中每个词一个词性类别的任务。 这里的词性类别可能是名词、动词、形容词或其他。
    下面的句子是一个词性标注的例子。 其中,v代表动词、n代表名词、c代表连词、d代表副词、wp代表标点符号。
    在这里插入图片描述
    词性作为对词的一种泛化,在语言识别、句法分析、信息抽取等任务中有重要作用。

    在这里插入图片描述
    命名实体识别 (Named Entity Recognition, NER) 是在句子的词序列中定位并识别人名、地名、机构名等实体的任务。
    如之前的例子,命名实体识别的结果是:
    在这里插入图片描述
    在这里插入图片描述
    句法分析是自然语言处理领域的一个关键问题,如能将其有效解决:
    一方面,可对相应树库构建体系的正确性和完善性进行验证;
    另一方面,也可直接服务于各种上层应用,比如搜索引擎用户日志分析和关键词识别,比如信息抽取、自动问答、机器翻译等其他自然语言处理相关的任务。
    短语结构和依存结构是目前句法分析中研究最广泛的两类文法体系。
    与短语结构语法比较起来,依存语法没有词组这个层次,每一个结点都与句子中的单词相对应,它能直接处理句子中词与词之间的关系。
    一般而言,短语结构语法是与依存语法等价的。因此,如果我们在短语结构分析之后得到了短语结构树,可以自动地把这样的短语结构树转换为依存树。
    在这里插入图片描述
    在这里插入图片描述

    依存句法最早由法国语言学家L.Tesniere在其著作《结构句法基础》(1959年)中提出,对语言学的发展产生了深远的影响,特别是在计算语言学界备受推崇。
    所谓依存句法,需要理解的关键概念在于依存。
    泰斯尼耶尔认为句子中各个成分间都存在着支配与从属的关系。
    处于支配地位的词成为支配词,也称为核心词;处于被支配地位的词称为从属词。
    中心节点在绝大多数情况下是动词,也就是说,动词是句子的中心。这种思想显然来源于配价理论。
    配价理论
    语言学中的“价”是借用化学中的“价”概念, 化学课中讲元素用提出的“价”它表示分子结构中各元素原子数目之间的比例关系。 最早把化学中的“价”引入语法研究中的是法国语言学家 Lucicen Tesniere。
    Tesniere引进“价”这个概念, 主要是针对动词, 是为说明一个动词能支配多少种性质的名词性词语。
    动词的“价”就决定于动词所支配的不同性质的名词性词语的数目, 一个动词如果能支配一种性质的名词性词语, 那它就是一价动词, 一个动词如果能支配两种性质的名词性词语, 那它就是二价动词, 一个动词如果能支配三种性质的名词性词语, 那它就是三价动词。
    哈工大的Ltp 平台在依存理论的基础上,将依存句法分析定义为识别句子中的“主谓宾”、“定状补”这些语法成分,并分析各成分之间的关 系。仍然是上面的例子,其分析结果为:
    在这里插入图片描述
    从分析结果中我们可以看到,句子的核心谓词为“提出”,主语是“李克强”,提出的宾语是“支持上海…”,“调研…时”是“提出”的 (时间) 状语,“李克强”的修饰语是“国务院总理”,“支持”的宾语是“探索 新机制”。
    有了上面的句法分析结果,我们就可以比较容易的看到,“提出者”是“李克强”,而不是“上海”或“外高桥”,即使它们都是名词,而且距离“提出”更近。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    对于自然语言处理是否依赖于树结构这一问题,综合上面一系列的研究工作,我们目前能够获得的结论是:对于那些较依赖于长距离语义关系的任务,在没有充足训练数据的情况下,使用树结构模型能够获得更好的效果。当然,我们还可以从两个相反的角度来描述这一结论,即在以下两种情况下,我们无需使用树结构模型:
    1、我们面对的是简单问题,其较少考虑长距离的语义依赖关系;
    2、即使面对的是复杂问题,只要我们能够获得足够的训练数据。

    展开全文
  • 1.NLP的常见领域:分词,词性标注,命名实体识别,句法分析,语义识别,垃圾邮件识别,拼写纠错,词义消歧,语音识别,音字转换,机器翻译,自动问答……如果对自然语言处理的应用场景不太了解,可以去腾讯的中文语义...

    本文是基于寒小阳博主中的NLP系列所记录下的笔记,非常感谢有那么优质的博客,很受用!

    1.NLP的常见领域:分词,词性标注,命名实体识别,句法分析,语义识别,垃圾邮件识别,拼写纠错,词义消歧,语音识别,音字转换,机器翻译,自动问答……

    如果对自然语言处理的应用场景不太了解,可以去腾讯的中文语义平台简单玩几个例子就熟悉了。

    2.NLP的发展现状

    根据stafford教授Dan Jurafsky的介绍:

    • 有些问题得到了基本解决,如:词性标注、命名实体识别、垃圾邮件识别。

    • 有些问题取得长足进展,如:情感分析、共指消解、词义消歧、句法分析、机器翻译、信息抽取。

    • 有些问题依然充满挑战,如:自动问答、复述、文摘提取、会话机器人等。

    3.NLP与算法类型问题

    比如,词性标注,垃圾邮件识别,褒贬分析,拼写纠错等问题都可以归结成简单的分类问题。这就好用我们之前掌握的机器学习分类方法去很好地处理。

    又比如,对于机器翻译,语音识别,音字转换等等领域,都可以抽象成运用隐马尔科夫模型去处理,而这本身是一个更加复杂的分类问题。

    4.NLP分词,编辑距离

    中文分词比英文分词难的多,对于英文,分词比较直观。一般被空格区分开来的就是不同的词。

    编辑距离(Minimum Edit Distance,MED),又称Levenshtein距离,是指两个字符串之间,由一个转成另一个所需要的最少编辑操作次数。 
    允许的编辑操作包括:

    • 将一个字符替换成另一个字符(substitution,s)
    • 插入一个字符(insert,i)
    • 删除一个字符(delete,d)

    一个简单的示意图如下:


    编辑距离

    我们可以使用动态规划算法解最小编辑距离,其形式化定义如下:


    动态规划

    通过这种方法,给字符串之间定义了一个量化的“距离”的概念,而且很有解释力。

    在机器学习中,有了“距离”就可以做很多事情。比如判断两个字符串的相似性,做一些分类、聚类的工作。

    在工程上,编辑距离可以用来提供用于拼写纠错的侯选单词。比如我用英文输入法输入一个“girlfriand”的单词。但是词库中没有“girlfriand”这个词。则可以寻找与“girlfriand”编辑距离为1或2的其他字符串,如“girlfriend”、“girlfriends”,作为纠正拼写错误的候选词。剩下的问题就是判断哪个侯选词的作为纠正词的概率更高而已。

    5.NLP与分类问题

    1. 二分类:判断题

      1.1 褒贬分析:判断一段文本是“褒”还是“贬”。

      1.2 垃圾邮件识别:判断一封邮件是“正常邮件”还是“垃圾邮件”。

    2. 多分类:单选题

      2.1 词性标注:判断一个词语是名词、动词、形容词、副词等等。

      2.2 拼写纠错:判断多个侯选词中的哪个词可以作为最终的纠正词。

      2.3 中文分词:从多种分词序列中挑选最优序列。

      2.4 机器翻译:从多个备选翻译句子中,判断出最优翻译语句。

    3. 类重叠分类:多选题

      3.1 主题分析:判断一个新闻同时包含哪几类主题(美食、食品安全、健康等)


    主题分析

    有时候管多选题叫做软分类,单选题叫硬分类

    Reference:

    https://blog.csdn.net/han_xiaoyang/article/details/50545650





    展开全文
  • 在中文的自然语言处理种,句法分析是一个比较重要的部分。  句法分析,英文为Parsing,指对句子种的词语语法功能进行分析。一个完整的汉语句子,一般有主语、谓语、宾语,复杂一些的句子就会出现各种各样的依存...

        在中文的自然语言处理种,句法分析是一个比较重要的部分。

        句法分析,英文为Parsing,指对句子种的词语语法功能进行分析。一个完整的汉语句子,一般有主语、谓语、宾语,复杂一些的句子就会出现各种各样的依存关系,包括补语、定语、状语、并列、同位语、数量、介宾、连动、疑问连动、兼语、关联、重复、标点、的字结构、地字结构、语气、时态等。如果在中文语言处理过程中,我们可以准确无误的对句子分析出这些依存关系,那么我们可以比较准确的找到这个句子的核心词。自然语言处理的初级目标就可以基本实现了。

        在句法分析的过程,我们会经常遇到指代的问题。例如,

        我毕业于**大学,我在这里生活了四年。它带给我很多的回忆。

        这里的“**大学”、“这里”都是指一个实体,属于共指现象。“它“与”生活了四年“属于指代关系。

        中文自然语言处理的指代非常难处理。按照指向,可以分为回指和预指,其中预指是用于指代下文的关系。不管如何指向,”指代“和”共指“关系都需要对文本的情景进行分析,这涉及语料上下文的分析。一般意义上讲,共指是可以脱离上下文存在,但为了更好的理解语义确不能脱离上下文,而指代是在一个下的范围内存在。它需要解决指代和共指是从哪里开始,到哪里结束。如果不能解决这个问题,将导致语句结构和语意不够清晰,影响整个文章的依赖关系的分析,比如“等价关系”,“上下位关系”,“整体和部分关系”等。

        近年来,共指消解(Coreference Resolution) 和指代消解(anaphora resolution)的研究受到了格外的关注,2000 年开始的ACE(Automatic Content Extraction) 评测会议中共指消解也是重要内容之一。中文的共指消解研究开始于二十世纪末。中文共指消解评测开始于2003 年ACE 会议。

    展开全文
  • NLP基础知识

    2020-04-23 15:37:20
    文章目录1、NLP简介自然语言处理的研究方向2、词法分析分词工具有哪些?JiebaHanLP3、句法分析4、文本表示**文本离散表示****文本分布式表示**工具 1、NLP简介 自然语言处理(Natural Language Processing, NLP)是...

    1、NLP简介

    自然语言处理(Natural Language Processing, NLP)是计算机科学、人工智能、语言学的交叉学科,研究在人与人交互中以及与计算机交互中的语言问题。为了建设和完善语言模型,自然语言处理建立计算框架,提出相应的方法来不断的完善设计各种使用系统,并探讨这些使用系统的评测方法。

    自然语言处理时人工智能的一个分支。

    自然语言处理的研究方向

    目前,NLP有很多研究方向,例如:文本分类(情感分析、意图识别),摘要生成(文本生成),多轮对话(智能客服)等。每一个研究方向都包含很多更基础的研究点,下面总结了从词汇、语句、篇章到系统应用的不同粒度上NLP应用场景:

    • 词法短语: 分词、词性标注、命名实体识别、组块分析
    • 句法语义:语言模型、依存句法分析、语义消歧、语义角色标注、深层语义分析
    • 篇章理解:文本分类、聚类、文章摘要、文本生成、篇章关系识别、篇章衔接关系、指代消歧、语义表示、语义匹配、主题模型、情感分析、舆情监控
    • 系统应用:信息抽取、知识图谱、信息检索、Query分析、自动问答、智能对话、机器翻译、语音识别、OCR、图像文字生成等

    2、词法分析

    词法分析包括分词、词性标注、命名实体识别等。分词是词法分析中最基本的任务。目前,汉字分词的准确率已达到95%左右。中文兼类词的词性歧义消解和未知词的词性识别是词性标注的热点和难点。

    什么是分词?
    分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,不过在词这一层上,中文比之英文要复杂得多、困难得多。

    分词的方法有哪些?

    • 基于字符串匹配的方法
      • 正向最大匹配法(FMM)
      • 逆向最大匹配法(BMM)
      • 双向最大匹配法(BM)
    • 基于统计的方法
      • N元文法模型(N-gram)
      • 隐马尔科夫模型(HMM)
      • 条件随机场(CRF)
    • 基于理解的方法
      • 基于语法和规则的分词方法

    基于统计的分词方法

    根据字符串在语料库中出现的统计频率来决定其是否构成此。主要统计模型:N元文法模型、隐马尔科夫模型、条件随机场等。

    1. N元文法模型:基于一种假设,文本中第n个词的出现只与前面n-1个词相关,而与其他任何词都不相关,那么整句的概率就是各个词出现概率的乘积。
      对于一个句子S,假设S是由词序列 w1 , w2, …wn 组成的,那么
      P(S) = P(w1w2w3…wn)=P(w1)P(w2|w1)P(w3|w1w2)…P(wn|w1w2…wn-1)
      其中P(w1)表示第一个词w1出现的概率,P(w2|w1)是已知第一个词的前提下,第二个词出现的概率。以此类推,词wn出现的概率取决于它前面全部的词。
    2. 马尔科夫假设:一个词的出现的概率只与它前面出现的有限的一个或者几个词有关,那么
      P(S)
      =P(w1w2w3…wn)
      =P(w1)P(w2|w1)P(w3|w1w2)…P(wn|w1w2…wn-1)
      ≈P(w1)P(w2|w1)P(w3|w2)…P(wn|wn-1)

    分词工具有哪些?

    Jieba

    常用轻量级的分词方法工具,可以实现分词、词性标注、关键词提取等功能。
    项目地址: jieba
    Python2/3均兼容

    支持三种分词模式

    • 精确模式,试图将句子最精确地切开,适合文本分析;
    • 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
    • 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

    安装

    • 全自动安装: pip isntall jieba 或者easy_install jieba
    • 半自动安装:先下载http://pypi.python.org/pypi/jieba/ ,解压后运行python setup.py install
    • 手动安装:将jieba目录放置于当前目录或site-packages目录
    • 通过import jieba来引用

    主要功能

    1、 分词

    • jieba.cut:三个输入参数:需要分词的字符串,cut_all是否采用全模式,HMM是否使用HMM模型
    • jieba.cut_for_search方法接受两个参数:需要分词的字符串,是否使用HMM模型。该方法适用于搜索引擎构建倒排索引的分析,粒度比较细
    • jieba.cutjieba.cut_for_search返回的结果都是一个可迭代的generator,可以使用for循环来获得分词后得到的每一个词语(unicode
    • jieba.lcutjieba.lcut_for_search 直接返回list类型
    • jieba.Tokenizer(dictionary=DEFAULT_DICT)新建自定义分词器,可用于同时使用不同词典。jieba.dt为默认分词器。所有全局分词相关函数都是该分词器的映射。
      import jieba
      
      seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
      print("Full Mode: " + "/ ".join(seg_list))  # 全模式
      
      seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
      print("Default Mode: " + "/ ".join(seg_list))  # 精确模式
      
      seg_list = jieba.cut("他来到了网易杭研大厦")  # 默认是精确模式
      print(", ".join(seg_list))
      
      seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")  # 搜索引擎模式
      print(", ".join(seg_list))
      
      输出结果:
      【全模式】:/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学
      
      【精确模式】:/ 来到/ 北京/ 清华大学
      
      【新词识别】:他, 来到,, 网易, 杭研, 大厦    (此处,“杭研”并没有在词典中,但是也被Viterbi算法识别出来了)
      
      【搜索引擎模式】: 小明, 硕士, 毕业,, 中国, 科学, 学院, 科学院, 中国科学院, 计算, 计算所,,, 日本, 京都, 大学, 日本京都大学, 深造
      

    2、添加自定义词典

    • 开发者可以指定自己自定义的词典,以便包含jieba词库里没有的词。虽然jieba有新词识别能力,但是自行添加新词可以保证更高的正确率。
    • 用法: jieba.load_userdict(file_name) #file_name为文件类对象或自定义词典的路径
    • 词典格式和dict.txt一样,一个词占一行;每一行分为三个部分:词语、词频(可省略)、词性(可省略),用空格隔开。
      示例:

      创新办 3 i
      云计算 5
      凯特琳 nz
      台中

    调整词典

    • 使用add_word(word, freq=None, tag=None)del_word(word)可在程序中动态修改词典
    • 使用suggest_freq(segment, tune=True)可调节单个词语的词频,使其能(或不同)被分出来
    • 代码示例
      >>> print('/'.join(jieba.cut('如果放到post中将出错。', HMM=False)))
      如果/放到/post/中将/出错/>>> jieba.suggest_freq(('中', '将'), True)
      494
      >>> print('/'.join(jieba.cut('如果放到post中将出错。', HMM=False)))
      如果/放到/post///出错/>>> print('/'.join(jieba.cut('「台中」正确应该不会被切开', HMM=False)))////正确/应该/不会//切开
      >>> jieba.suggest_freq('台中', True)
      69
      >>> print('/'.join(jieba.cut('「台中」正确应该不会被切开', HMM=False)))/台中//正确/应该/不会//切开
      

    3、关键词提取

    基于TF-IDF算法的关键词抽取
    import jieba.analyse

    • jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
      • sentence为待提取的文本
      • topK为返回几个TF-IDF权重最大的关键词,默认值为20
      • withWeight是否一并返回关键词的权重值,默认为False
      • allowPOS仅包括指定词性的词,默认值为空,即不筛选
    • jieba.analyse.TFIDF(idf_path=None)新建TF-IDF实例,idf_pathIDF频率文件
    • 示例
      import jieba.analyse
      s = '下一步,要围绕必须确保社保费率降低、必须 确保基本养老金按时足额发放的要求,深入企业了解政策落实情况,及时研究解决新问题,确保政策落地,不打折扣。稳定缴费方式,在落实职工基本养老保险单位缴费比例不高于16%的前提下,对个别省份存在的省内费率、缴费基数标准不统一等问题,今年原则上不作政 策调整。各地要切实担起基本养老金发放主体责任,确保一户不落。对省级统筹要稳妥推进。'
      tags = jieba.analyse.extract_tags(s)
      >>> print(' '.join(tags))
      缴费 确保 养老金 发放 落实 政策 社保费 职工基本 16% 打折扣 担起 基本 必须 养老保险 足额 一户 稳妥 原则上 按时 统筹
      

    基于TextRank算法的关键词抽取

    • jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v'))直接使用,接口相同,注意默认过滤词性
    • jieba.analyse.TextRank()新建自定义TextRank实例
    • 示例
      >>> for x, w in jieba.analyse.extract_tags(s, topK=5, withWeight=True):
      ...     print('%s %s'%(x, w))
      ...
      缴费 0.408791852813
      确保 0.387930448194
      养老金 0.263083841011
      发放 0.212644450916
      落实 0.202288516644
      
      >>> for x, w in jieba.analyse.textrank(s, topK=5, withWeight=True):
      ...     print('%s %s'%(x, w))
      ...
      确保 1.0
      缴费 0.856582759027
      政策 0.66525919264
      发放 0.66041604087
      基本 0.596023711011
      

    4、词性标注
    jieba.posseg.POSTokenizer(tokenizer=None)新建自定义分词器,tokenizer参数可指定内部使用的jieba.Tokenizer分词器。jieba.posseg.dt为默认词性标注分析器
    示例:

    >>> import jieba.posseg as pseg
    >>> words = pseg.cut("我爱北京天安门")
    >>> for word, flag in words:
    ...     print('%s %s'%(word, flag))
    ...
    我 r
    爱 v
    北京 ns
    天安门 ns
    
    

    HanLP

    Hanlp可以实现很多功能,例如分词、标注、实体识别等。
    项目地址: HanLP

    具体安装使用方法参考项目说明

    3、句法分析

    句法分析基本任务是确定句子的句法结构或句子中词汇之间的依存关系。

    句法分析的意义
    句法分析表示NLP的最终目标,但是实现最终目标的重要环节,甚至是关键环节。

    句法分析的作用

    • 句法结构分析判断句子构成是否符合给定的语法。
    • 依存语法分析用词与词之间的依存关系描述语言结构的框架。

    句法结构分析的方法

    • 基于规则的分析方法
      由人工组织语法规则,建立语法知识库,通过条件约束和检查实现句法结构歧义的消除
      • CYK分析算法
      • GLR分析算法
    • 语法驱动的统计句法分析
      由生成语法定义被分析的语言及其分析出的类别,在训练数据中观察到的各种语言现象的分布以统计数据的方式与语法规则一起编码。
      • PCFG
      • SCFG

    4、文本表示

    文字是人类认知过程中产生的高层认知抽象实体,我们需要将其转换为计算机可以处理的数据类型。计算机是以编码(如UTF-8编码)的形式存储语言文字的,计算机只会存储、传输代表文字的二进制数据。那如何让计算机理解语言文字呢?

    主要有以下是那种: 词网、词袋、词向量

    常见的方法有:

    • 文本离散表示, 如TF-IDF
    • 文本分布式表示,如word2vec

    WordNet词网

    传统的一种用于自然语言处理的方法是使用词网(WordNet)——人为定义每一个词的各种属性。
    如我们定义“好”、“优秀”、“不错”是一组同义词,表示质量好;“好”和“同意”、“赞同”是一组同义词,表示赞成;“好”还和“很”是同义词,表示程度,如“好冷”……
    除了同义词,我们还可以定义词的其他属性,如从属关系:“熊猫”属于“熊类”,属于“食肉动物”,属于“哺乳动物”……
    然而WordNet的缺点是十分明显的:

    • 词之间缺少细微差别:我们将“好”和“优秀”作为同义词,但二者还是有区别的
    • 不断会有词产生新的意思,需要不断更新
    • WordNet定义过于主观
    • 构建WordNet需要大量的人力
    • 无法计算词之间的相似程度

    文本离散表示

    • Bag of words(词袋模型)
      One-hot编码是指,给定一个长度为N的字典,每个词用一个长度为N的向量来表示。其中只有一个地方为1,其他地方都为0.
      在这里插入图片描述
      假设一个词典只有8个词[“今”, “我”, “好”, “看”, “文”, “章”, “天”, “你”],”好”这个词在词典中的第三个词,可用一个长度为8的词向量来表示”好”
      “好” = [0, 0, 1, 0, 0, 0, 0, 0]
      词袋模型(Bag of words)忽略一句话的词序和语法,把一句话中所有的词的one-hot编码相加,就得到了这句话的向量表示。
      “技术杂学铺的文章写得好好看啊” = [0, 0, 2, 1, 1, 1, 0, 0]
      由于词袋模型忽略了词的先后顺序,“我看文章”和“文章看我”使用同一个向量表示的,但二者的语义完全不同。
      尽管如此,使用词袋模型的朴素贝叶斯算法在一些文本分类任务上的效果还是很好的。

    • TF-IDF
      TF-IDF算法是一种用于信息检索与数据挖掘的常用加权技术。TF的意思是词频(Term-frequency)IDF的意思是逆向文件频率(inverse Document frequency)
      TF-IDF是传统的统计算法,用于评估一个词在一个文档集中对于某一个文档的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。

    文本分布式表示

    词向量(word vector)
    和one-hot编码类似,我们依旧使用一个向量来表示一个词。只不过这些词的取值不再是整数。
    在这里插入图片描述
    注:词向量(word vectors),也称为词嵌入(word embedding)

    语义相近的词,其词向量也相近。(词向量相近可以是两个向量的欧式距离很小,又或者是两个向量的夹角很小)。

    词向量另一个有趣的特点是,虽然其是由一串等长的浮点数表示的,但是词向量中暗含着某种词义。比如“国王”的词向量减去“女王”的词向量约等于“男孩”的词向量减去“女孩”的词向量;“中国”-“中国人”约等于“德国”-“德国人”。

    工具

    gensim

    参考资料:

    1. 文本表示
    展开全文
  • nlp基础

    2018-05-10 08:41:52
    from sklearn.feature_extraction.text import CountVectorizer In [2]: vect = CountVectorizer() vect Out[2]: CountVectorizer(analyzer='word', binary=False, decode_error='strict', dtype=&...
  • NLP-基础知识-001

    2019-11-30 10:54:56
    一、文本分析流程 Pipeline 原始文本(网页文本、新闻、...) -> 分词(中文、英文) -> 清洗(无用的标签 !¥ 停用词.....) -> 标准化(英文时态等) -> 特征提取(tf-idf、word2vec) ->...
  • NLP(理论基础

    2019-09-04 21:28:20
    1、首先介绍一下NLP基础知识 ①分词 1)nltk安装(pip install nltk) nltk就是一个工具包,里面有很多语料,很多模型。可以用来分词。 import nltk sentence = “hello, world" token...
  • NLP原理及基础

    2017-12-27 22:37:49
    以NLTK为基础配合讲解自然语言处理的原理http://www.nltk.org/ Python上著名的自然语⾔处理库 自带语料库,词性分类库 自带分类,分词,等功能 强⼤的社区⽀持 还有N多的简单版wrapper,如 TextBlobNLTK安装# ...
  • 本文简要介绍Python自然语言处理(NLP),使用Python的NLTK库。NLTK是Python的自然语言处理工具包,在NLP领域中,最常使用的一个Python库。什么是NLP?简单来说,自然语言处理(NLP)就是开发能够理解人类语言的应用程序...
  • 本次代码的环境: 运行平台: Windows Python版本: Python3.x IDE: PyCharm 一、 前言 2016年3月9日至15日和2017年5月23日至27日,分别在韩国首尔和中国嘉兴乌镇,韩国围棋九段棋手李世石、中国围棋九段棋手柯洁与...
  • 本篇便是主要介绍自然语言处理中的基础技能,主要包括:Python正则表达式、jieba分词、Python字符串处理等。 本篇代码可见:Github 一、Python 正则表达式   我们在大文本中匹配字符串时,有些情况用str自带的函数...
  • 统计自然语言处理基础(中文版 高清带书签) 《统计自然语言处理基础:国外计算机科学教材系列》是一本全面系统地介绍统计自然语言处理技术的专著,被国内外许多所著名大学选为计算语言学相关课程的教材。《统计自然...
  • 自然语言处理基础技能(NLP)】语言模型基础 目录 1. 引言:朴素贝叶斯的局限性 2. N-gram语言模型是啥? 2.1从假设性独立到联合概率链规则 2.2 从联合概率链规则到n-gram语言模型 2.3 怎样选择依赖词的个数...
  • nlp(Natural Language Processing) 简称:自然语言处理 以下为自然语言处理用到的基础算法,包括词法分析、句法分析、语义分析、文档分析、其他 一、词法分析 词法分析包括分词、词性标注、实体识别、拼写检查等。 1...
  • 目前,有很多开源或开放的自然语言处理工具可以供我们使用,可以方便地解决很多NLP基础任务,例如,分词、词性标注、词干化、命名实体识别、名词短语提取等等。 汇总起来方便比较,择优而用。 目录 1. HanLP 2...
  • NLP基础的入门书籍,搭配其他几本一起看,见博主其他上传资源
  • 三大基础基础技术写在前面一、 中文分词jieba(结巴)分词三种分词模式(1)全模式 :把所有...本文大量的参考了《Python自然语言处理实战:核心技术与算法》,其代码托管在github上,地址是https://github.com/nl...
  • #去空格及特殊字符 s=' hello,world!' print(s.strip()) print(s.lstrip(' hello,')) print(s.rstrip('!'))#查找字符 sstr1='strchr' sstr2='r' npos=sstr1.index(sstr2) print(npos)#字符串大小写转换 ...
  • - 自然语言处理 - 计算机视觉 - 机器人 - 通用智能 人工智能三大阶段 阶段 1——机器学习:智能系统使用一系列算法从经验中进行学习。 阶段 2——机器智能:机器使用的一系列从经验中进行学习的高级算法,例如深度...
1 2 3 4 5 ... 20
收藏数 167,818
精华内容 67,127