精华内容
下载资源
问答
  • Python中文分词 jieba 十五分钟入门与进阶

    万次阅读 多人点赞 2017-05-27 16:21:04
    整体介绍jieba 基于Python的中文分词工具,安装使用非常方便,直接pip即可,2/3都可以,功能强悍,博主十分推荐 github:https://github.com/fxsjy/jieba 开源中国地址:...

    整体介绍

    jieba 基于Python的中文分词工具,安装使用非常方便,直接pip即可,2/3都可以,功能强悍,博主十分推荐
    github:https://github.com/fxsjy/jieba
    开源中国地址:http://www.oschina.net/p/jieba/?fromerr=LRXZzk9z
    写这篇文章花费两个小时小时,阅读需要十五分钟,读完本篇文章后您将能上手jieba

    下篇博文将介绍将任意中文文本生成中文词云

    同时如果你希望使用其它分词工具,那么你可以留意我之后的博客,我会在接下来的日子里发布其他有关内容.

    三种分词模式与一个参数

    以下代码主要来自于jieba的github,你可以在github下载该源码

    import jieba
    
    seg_list = jieba.cut("我来到北京清华大学", cut_all=True, HMM=False)
    print("Full Mode: " + "/ ".join(seg_list))  # 全模式
    
    seg_list = jieba.cut("我来到北京清华大学", cut_all=False, HMM=True)
    print("Default Mode: " + "/ ".join(seg_list))  # 默认模式
    
    seg_list = jieba.cut("他来到了网易杭研大厦", HMM=False)
    print(", ".join(seg_list))
    
    seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造", HMM=False)  # 搜索引擎模式
    print(", ".join(seg_list))
    
    # jieba.cut的默认参数只有三个,jieba源码如下
    # cut(self, sentence, cut_all=False, HMM=True)
    # 分别为:输入文本 是否为全模式分词 与是否开启HMM进行中文分词
    

    分词模式的运行结果

    关键词提取

    from os import path
    import jieba.analyse as analyse
    
    d = path.dirname(__file__)
    
    text_path = 'txt/lz.txt' #设置要分析的文本路径
    text = open(path.join(d, text_path)).read()
    
    for key in analyse.extract_tags(text,50, withWeight=False):
    # 使用jieba.analyse.extract_tags()参数提取关键字,默认参数为50
        print key.encode('utf-8')
        # 设置输出编码为utf-8不然在因为win下控制台默认中文字符集为gbk,所以会出现乱码
        # 当withWeight=True时,将会返回number类型的一个权重值(TF-IDF)
    

    提取关键词的运行效果

    运行结果如图所示,但是同样的我们也发现了一些问题,比如:
    问题一:
    分词错误,在运行结果中中"路明非"(龙族男主)被分成了"路明"和"明非"啷个中文词语,这是因为jieba的词库中并不含有该词的原因,同样的原因以及jieba词库比较老,因而在许多文本分词时都会产生这种情况,而这个问题我们将在第五个模块"三种可以让分词更准确的方法"解决
    问题二:
    出现非实意词语,无论在哪种语言中,都会存在大量的非实意单词,这一类词云我们需要在进行中文分词时进行去除停用词,这个问题将在下一个模块中解决

    中文歧义测试与去除停用词

    本段代码主要来自于《机器学习实践指南(第二版))》,其作者为麦好,ps:这是一本好书

    找停用词点这里:多版本中文停用词词表 + 多版本英文停用词词表 + python词表合并程序

    import jieba
    TestStr = "2010年底部队友谊篮球赛结束"
    # 因为在汉语中没有空格进行词语的分隔,所以经常会出现中文歧义,比如年底-底部-部队-队友
    # jieba 默认启用了HMM(隐马尔科夫模型)进行中文分词,实际效果不错
    
    seg_list = jieba.cut(TestStr, cut_all=True)
    print "Full Mode:", "/ ".join(seg_list) # 全模式
    
    seg_list = jieba.cut(TestStr, cut_all=False)
    print "Default Mode:", "/ ".join(seg_list) # 默认模式
    # 在默认模式下有对中文歧义有较好的分类方式
    
    seg_list = jieba.cut_for_search(TestStr) # 搜索引擎模式
    print "cut for Search","/".join(seg_list)
    

    中文歧义测试

    去除文本中的停用词

    # - * - coding: utf - 8 -*-
    #
    # 作者:田丰(FontTian)
    # 创建时间:'2017/5/27'
    # 邮箱:fonttian@163.com
    # CSDN:http://blog.csdn.net/fontthrone
    
    import sys
    import jieba
    from os import path
    
    d = path.dirname(__file__)
    stopwords_path = 'stopwords\stopwords1893.txt' # 停用词词表
    
    text_path = 'txt/lz.txt' #设置要分析的文本路径
    text = open(path.join(d, text_path)).read()
    
    def jiebaclearText(text):
        mywordlist = []
        seg_list = jieba.cut(text, cut_all=False)
        liststr="/ ".join(seg_list)
        f_stop = open(stopwords_path)
        try:
            f_stop_text = f_stop.read( )
            f_stop_text=unicode(f_stop_text,'utf-8')
        finally:
            f_stop.close( )
        f_stop_seg_list=f_stop_text.split('\n')
        for myword in liststr.split('/'):
            if not(myword.strip() in f_stop_seg_list) and len(myword.strip())>1:
                mywordlist.append(myword)
        return ''.join(mywordlist)
    
    text1 = jiebaclearText(text)
    print text1
    

    龙族中文分词去除中文停用词后的效果

    三种可以让分词更准确的方法

    方案一,在jieba中添加中文词语:
    这种方法可以有效的解决之前龙族男主"路明非"被分为"路明"和"明非"两个词的情况

    #这个只需要在源代码中加入一个语句即可
    import sys
    import jieba
    from os import path
    
    d = path.dirname(__file__)
    stopwords_path = 'stopwords\stopwords1893.txt' # 停用词词表
    
    jieba.add_word('路明非')
    # 添加的自定义中文语句的代码在这里
    # 添加的自定义中文语句的代码在这里
    # 添加的自定义中文语句的代码在这里
    
    text_path = 'txt/lz.txt' #设置要分析的文本路径
    text = open(path.join(d, text_path)).read()
    
    def jiebaclearText(text):
        mywordlist = []
        seg_list = jieba.cut(text, cut_all=False)
        liststr="/ ".join(seg_list)
        f_stop = open(stopwords_path)
        try:
            f_stop_text = f_stop.read( )
            f_stop_text=unicode(f_stop_text,'utf-8')
        finally:
            f_stop.close( )
        f_stop_seg_list=f_stop_text.split('\n')
        for myword in liststr.split('/'):
            if not(myword.strip() in f_stop_seg_list) and len(myword.strip())>1:
                mywordlist.append(myword)
        return ''.join(mywordlist)
    
    text1 = jiebaclearText(text)
    print text1
    

    运行效果如下:
    添加自定义语句之后

    方案二,添加自定义词库:
    下面的代码主要来自于jieba的github源码,你可以在github下载该例子

    #encoding=utf-8
    from __future__ import print_function, unicode_literals
    import sys
    sys.path.append("../")
    import jieba
    jieba.load_userdict("userdict.txt")
    # jieba采用延迟加载,"import jieba"不会立即触发词典的加载,一旦有必要才开始加载词典构建trie。如果你想手工初始jieba,也可以手动初始化。示例如下:
    # import jieba
    # jieba.initialize() #手动初始化(可选)
    # 在0.28之前的版本是不能指定主词典的路径的,有了延迟加载机制后,你可以改变主词典的路径:
    # 注意用户词典为主词典即优先考虑的词典,原词典此时变为非主词典
    # jieba.set_dictionary('data/dict.txt.big')
    
    import jieba.posseg as pseg
    
    test_sent = (
    "李小福是创新办主任也是云计算方面的专家; 什么是八一双鹿\n"
    "例如我输入一个带“韩玉赏鉴”的标题,在自定义词库中也增加了此词为N类\n"
    "「台中」正確應該不會被切開。mac上可分出「石墨烯」;此時又可以分出來凱特琳了。"
    )
    words = jieba.cut(test_sent)
    print('/'.join(words))
    
    print("="*40)
    
    result = pseg.cut(test_sent)
    # pseg.cut 切分,并显示词性
    # 下面是userdict.txt的内容,如果不加入这个词库,那么在运行结果中,云计算,创新办等词都将无法识别
    '''
    云计算 5
    李小福 2 nr
    创新办 3 i
    easy_install 3 eng
    好用 300
    韩玉赏鉴 3 nz
    八一双鹿 3 nz
    台中
    凱特琳 nz
    Edu Trust认证 2000
    '''
    
    

    添加用户词典

    下面这段代码主要来自于jieba的github,你可以在github下载该源码

    print('='*40)
    print('添加自定义词典/调整词典')
    print('-'*40)
    
    print('/'.join(jieba.cut('如果放到post中将出错。', HMM=False)))
    #如果/放到/post/中将/出错/。
    # 调整词典使 中将 变为中/将
    print(jieba.suggest_freq(('中', '将'), True))
    #494
    print('/'.join(jieba.cut('如果放到post中将出错。', HMM=False)))
    #如果/放到/post/中/将/出错/。
    print('/'.join(jieba.cut('「台中」正确应该不会被切开', HMM=False)))
    #「/台/中/」/正确/应该/不会/被/切开
    print(jieba.suggest_freq('台中', True))
    print(jieba.suggest_freq('台中', True))
    #69
    # 调整词典使 台中 不被分词为台/中
    print('/'.join(jieba.cut('「台中」正确应该不会被切开', HMM=False)))
    #「/台中/」/正确/应该/不会/被/切开
    

    并行计算

    下面这段代码主要来自于jieba的github,你可以在github下载该源码

    原理:将目标文本按行分隔后,把各行文本分配到多个python进程并行分词,然后归并结果,从而获得分词速度的可观提升

    基于python自带的multiprocessing模块,目前暂不支持windows

    import sys
    import time
    sys.path.append("../../")
    import jieba
    
    jieba.enable_parallel() # 关闭并行分词
    jieba.enable_parallel(4) # 开启并行分词模式,参数为并行进程数 
    
    url = sys.argv[1]
    content = open(url,"rb").read()
    t1 = time.time()
    words = "/ ".join(jieba.cut(content))
    
    t2 = time.time()
    tm_cost = t2-t1
    
    log_f = open("1.log","wb")
    log_f.write(words.encode('utf-8'))
    
    print('speed %s bytes/second' % (len(content)/tm_cost))
    

    实验结果:在4核3.4GHz Linux机器上,对金庸全集进行精确分词,获得了1MB/s的速度,是单进程版的3.3倍。

    展开全文
  • 中文分词jieba

    千次阅读 2018-01-27 11:23:22
    jieba是基于python的开源中文分词项目。 jieba分词的数据来源人民日报的切分语料等,这个参考链接2原作者的介绍。 来源主要有两个,一个是网上能下载到的1998人民日报的切分语料还有一个msr的切分语料。另一个是...

    1、jieba简介

    jieba是基于python的开源中文分词项目。

    jieba分词的数据来源人民日报的切分语料等,这个参考链接2原作者的介绍。

    来源主要有两个,一个是网上能下载到的1998人民日报的切分语料还有一个msr的切分语料。另一个是我自己收集的一些txt小说,用ictclas把他们切分(可能有一定误差)。 然后用python脚本统计词频。

    2、jieba思想

    要统计的主要有三个概率表:1)位置转换概率,即B(开头),M(中间),E(结尾),S(独立成词)四种状态的转移概率;2)位置到单字的发射概率,比如P(“和”|M)表示一个词的中间出现”和”这个字的概率;3) 词语以某种状态开头的概率,其实只有两种,要么是B,要么是S。

    2.1trie树

    2.2词频统计

    根据需要分的词一个一个在词库里是否出现,如果出现,记录相应的词频,然后对分割的词遍历结束之后,取词频最大的那个。

    这样比树需要的内存更少,而且速度也很快。

    现在jieba分词对于词典的操作,改为了一层word:freq的结构,存于lfreq中,其具体操作如下:

    对于每个收录词,如果其在lfreq中,则词频累积,如果不在则加入lfreq
    对于该收录词的所有前缀进行上一步操作,如单词’cat’,则对c, ca, cat分别进行第>一步操作。除了单词本身的所有前缀词频初始为0.

    3.应用实例

    实现并行分词计算:

    import sys
    import time
    sys.path.append("../../")
    import jieba
    
    jieba.enable_parallel() # 关闭并行分词
    jieba.enable_parallel(4) # 开启并行分词模式,参数为并行进程数 
    
    url = sys.argv[1]
    content = open(url,"rb").read()
    t1 = time.time()
    words = "/ ".join(jieba.cut(content))
    
    t2 = time.time()
    tm_cost = t2-t1
    
    log_f = open("1.log","wb")
    log_f.write(words.encode('utf-8'))
    
    print('speed %s bytes/second' % (len(content)/tm_cost))

    参考:

    1. jieba分词笔记
    2. GitHub 模型数据的产生
    3. 分词用法案例 CSDN
    展开全文
  • 中文分词jieba学习笔记一、分词模式二、自定义词典2.1 命令2.2 使用方式三、关键词抽取 一、分词模式 二、自定义词典 2.1 命令   jieba.load_userdict(filename) filename为自定义词典的路径 2.2 使用方式   在...

    一、分词模式

    在这里插入图片描述

    二、自定义词典

      注意:HMM模型(隐马尔可夫模型),可以识别新词

    2.1 命令

      jieba.load_userdict(filename) filename为自定义词典的路径

    2.2 使用方式

      在使用的时候,词典的格式和jieba分词器本身的分词器中的词典格式必须保持一致,一个词占一行,每一行分成三部分,一部分为词语,一部分为词频(可以省略),最后为词性(可以省略),用空格隔开。

    三、关键词抽取(基于TF-IDF算法)

      关键词抽取并且进行词向量化之后,才好进行下一步的文本分析,可以说这一步是自然语言处理技术中文本处理最基础的一步。提取出来的关键词是字典形式存储。

    3.1 用jieba.analyse.extract_tags()

      命令

    jieba.analyse.extract_tags(sentence,topK=20,withWeight=False,allowPos=())

      参数sentence:待提取文本
         topK:返回几个TF/IDF权重最大的关键词,默认为20个
         withWeight:是否返回关键词的权重值,默认为False
         allowPos:仅包含指定词性的词,默认为空,即不筛选
      例子

    import jieba.analyse
    s="我好想去重庆找大瑞玩然后一起吃火锅喝冰奶茶啊"
    for a,b in jieba.analyse.extract_tags(s,withWeight=True):
     print(a,b)
    

      结果

    找大瑞 1.7078239289857142
    喝冰 1.7078239289857142
    吃火锅 1.5578493397714286
    奶茶 1.4661559274571427
    重庆 0.9241968538314286
    一起 0.6959970096985714
    然后 0.6867600907842857

    3.2 用jieba.analyse.textrank(s)

      和extract_tags的不同好像在于textrank进行了归一化。
      命令

    jieba.analyse.textrank(sentence,topK=20,withWeight=False,allowPOS)

      参数:和上述一样。
      例子

    import jieba.analyse
    s="不想上学啊啊啊啊"
    a= jieba.analyse.textrank(s,withWeight=True)
    print(a)

      结果

    [('不想', 1.0), ('上学', 0.9961264494011037)]

    四、词性标注

      切出来的结果是generator。
      例子

    s="这个十一月俺要去南京看枫叶、吃生煎和锅贴。"
    for c,d in jieba.posseg.cut(s):
     print(c,d)

      结果

    这个 r
    十一月 m
    俺 r
    要 vv
    南京 ns
    看 v
    枫叶 n
    、 x
    吃生 vv
    和 c
    锅贴 n
    。 x

      paddle模式词性

    标签 含义 标签 含义 标签 含义 标签 含义
    n 普通名词 f 方位名词 s 处所名词 t 时间
    nr 人名 ns 地名 nt 机构名 nw 作品名
    nz 其他专名 v 普通动词 vd 动副词 vn 名动词
    a 形容词 ad 副行词 an 名形词 d 副词
    m 数量词 q 量词 r 代词 p 介词
    c 连词 u 助词 xc 其他虚词 w 标点符号
    PER 人名 LOC 地名 ORG 机构名 TIME 时间

    五、并行分词

      注意:windows不支持并行分词
      命令jieba.enable_parallel(4),参数代表并行进程数
         jieba.disable_parallel(),关闭并行分词模式

    六、返回词语在原文的起止位置

      使用jieba.tokenize可以返回词语在原文的起始位置
      注意:输入参数只接受unicode

    result = jieba.tokenize(u'上海益民食品一厂有限公司')
    print("【普通模式】")
    for tk in result:
        print("word: {0} \t\t start: {1} \t\t end: {2}".format(tk[0],tk[1],tk[2]))
    
    展开全文
  • In [1]: import spacy # 加载英文模型数据,稍许等待 In [2]: nlp = spacy.load('en') Word tokenize功能,spaCy 1.2版本加了中文tokenize接口,基于Jieba中文分词: In [3]: test_doc = nlp(u"it's word tokenize ...

    spaCy 是一个Python自然语言处理工具包,诞生于2014年年中,号称“Industrial-Strength Natural Language Processing in Python”,是具有工业级强度的Python NLP工具包。spaCy里大量使用了 Cython 来提高相关模块的性能,这个区别于学术性质更浓的Python NLTK,因此具有了业界应用的实际价值。

    安装和编译 spaCy 比较方便,在ubuntu环境下,直接用pip安装即可:

    sudo apt-get install build-essential python-dev git

    sudo pip install -U spacy

    不过安装完毕之后,需要下载相关的模型数据,以英文模型数据为例,可以用"all"参数下载所有的数据:

    sudo python -m spacy.en.download all

    或者可以分别下载相关的模型和用glove训练好的词向量数据:

    # 这个过程下载英文tokenizer,词性标注,句法分析,命名实体识别相关的模型

    python -m spacy.en.download parser

    # 这个过程下载glove训练好的词向量数据

    python -m spacy.en.download glove

    下载好的数据放在spacy安装目录下的data里,以我的ubuntu为例:

    textminer@textminer:/usr/local/lib/python2.7/dist-packages/spacy/data$ du -sh *

    776Men-1.1.0

    774Men_glove_cc_300_1m_vectors-1.0.0

    进入到英文数据模型下:

    textminer@textminer:/usr/local/lib/python2.7/dist-packages/spacy/data/en-1.1.0$ du -sh *

    424Mdeps

    8.0Kmeta.json

    35Mner

    12Mpos

    84Ktokenizer

    300Mvocab

    6.3Mwordnet

    可以用如下命令检查模型数据是否安装成功:

    textminer@textminer:~$ python -c "import spacy; spacy.load('en'); print('OK')"

    OK

    也可以用pytest进行测试:

    # 首先找到spacy的安装路径:

    python -c "import os; import spacy; print(os.path.dirname(spacy.__file__))"

    /usr/local/lib/python2.7/dist-packages/spacy

    # 再安装pytest:

    sudo python -m pip install -U pytest

    # 最后进行测试:

    python -m pytest /usr/local/lib/python2.7/dist-packages/spacy --vectors --model --slow

    ============================= test session starts ==============================

    platform linux2 -- Python 2.7.12, pytest-3.0.4, py-1.4.31, pluggy-0.4.0

    rootdir: /usr/local/lib/python2.7/dist-packages/spacy, inifile:

    collected 318 items

    ../../usr/local/lib/python2.7/dist-packages/spacy/tests/test_matcher.py ........

    ../../usr/local/lib/python2.7/dist-packages/spacy/tests/matcher/test_entity_id.py ....

    ../../usr/local/lib/python2.7/dist-packages/spacy/tests/matcher/test_matcher_bugfixes.py .....

    ......

    ../../usr/local/lib/python2.7/dist-packages/spacy/tests/vocab/test_vocab.py .......Xx

    ../../usr/local/lib/python2.7/dist-packages/spacy/tests/website/test_api.py x...............

    ../../usr/local/lib/python2.7/dist-packages/spacy/tests/website/test_home.py ............

    ============== 310 passed, 5 xfailed, 3 xpassed in 53.95 seconds ===============

    现在可以快速测试一下spaCy的相关功能,我们以英文数据为例,spaCy目前主要支持英文和德文,对其他语言的支持正在陆续加入:

    textminer@textminer:~$ ipython

    Python 2.7.12 (default, Jul 1 2016, 15:12:24)

    Type "copyright", "credits" or "license" for more information.

    IPython 2.4.1 -- An enhanced Interactive Python.

    ? -> Introduction and overview of IPython's features.

    %quickref -> Quick reference.

    help -> Python's own help system.

    object? -> Details about 'object', use 'object??' for extra details.

    In [1]: import spacy

    # 加载英文模型数据,稍许等待

    In [2]: nlp = spacy.load('en')

    Word tokenize功能,spaCy 1.2版本加了中文tokenize接口,基于Jieba中文分词:

    In [3]: test_doc = nlp(u"it's word tokenize test for spacy")

    In [4]: print(test_doc)

    it's word tokenize test for spacy

    In [5]: for token in test_doc:

    print(token)

    ...:

    it

    's

    word

    tokenize

    test

    for

    spacy

    英文断句:

    In [6]: test_doc = nlp(u'Natural language processing (NLP) deals with the application of computational models to text or speech data. Application areas within NLP include automatic (machine) translation between languages; dialogue systems, which allow a human to interact with a machine using natural language; and information extraction, where the goal is to transform unstructured text into structured (database) representations that can be searched and browsed in flexible ways. NLP technologies are having a dramatic impact on the way people interact with computers, on the way people interact with each other through the use of language, and on the way people access the vast amount of linguistic data now in electronic form. From a scientific viewpoint, NLP involves fundamental questions of how to structure formal models (for example statistical models) of natural language phenomena, and of how to design algorithms that implement these models.')

    In [7]: for sent in test_doc.sents:

    print(sent)

    ...:

    Natural language processing (NLP) deals with the application of computational models to text or speech data.

    Application areas within NLP include automatic (machine) translation between languages; dialogue systems, which allow a human to interact with a machine using natural language; and information extraction, where the goal is to transform unstructured text into structured (database) representations that can be searched and browsed in flexible ways.

    NLP technologies are having a dramatic impact on the way people interact with computers, on the way people interact with each other through the use of language, and on the way people access the vast amount of linguistic data now in electronic form.

    From a scientific viewpoint, NLP involves fundamental questions of how to structure formal models (for example statistical models) of natural language phenomena, and of how to design algorithms that implement these models.

    词干化(Lemmatize):

    In [8]: test_doc = nlp(u"you are best. it is lemmatize test for spacy. I love these books")

    In [9]: for token in test_doc:

    print(token, token.lemma_, token.lemma)

    ...:

    (you, u'you', 472)

    (are, u'be', 488)

    (best, u'good', 556)

    (., u'.', 419)

    (it, u'it', 473)

    (is, u'be', 488)

    (lemmatize, u'lemmatize', 1510296)

    (test, u'test', 1351)

    (for, u'for', 480)

    (spacy, u'spacy', 173783)

    (., u'.', 419)

    (I, u'i', 570)

    (love, u'love', 644)

    (these, u'these', 642)

    (books, u'book', 1011)

    词性标注(POS Tagging):

    In [10]: for token in test_doc:

    print(token, token.pos_, token.pos)

    ....:

    (you, u'PRON', 92)

    (are, u'VERB', 97)

    (best, u'ADJ', 82)

    (., u'PUNCT', 94)

    (it, u'PRON', 92)

    (is, u'VERB', 97)

    (lemmatize, u'ADJ', 82)

    (test, u'NOUN', 89)

    (for, u'ADP', 83)

    (spacy, u'NOUN', 89)

    (., u'PUNCT', 94)

    (I, u'PRON', 92)

    (love, u'VERB', 97)

    (these, u'DET', 87)

    (books, u'NOUN', 89)

    命名实体识别(NER):

    In [11]: test_doc = nlp(u"Rami Eid is studying at Stony Brook University in New York")

    In [12]: for ent in test_doc.ents:

    print(ent, ent.label_, ent.label)

    ....:

    (Rami Eid, u'PERSON', 346)

    (Stony Brook University, u'ORG', 349)

    (New York, u'GPE', 350)

    名词短语提取:

    In [13]: test_doc = nlp(u'Natural language processing (NLP) deals with the application of computational models to text or speech data. Application areas within NLP include automatic (machine) translation between languages; dialogue systems, which allow a human to interact with a machine using natural language; and information extraction, where the goal is to transform unstructured text into structured (database) representations that can be searched and browsed in flexible ways. NLP technologies are having a dramatic impact on the way people interact with computers, on the way people interact with each other through the use of language, and on the way people access the vast amount of linguistic data now in electronic form. From a scientific viewpoint, NLP involves fundamental questions of how to structure formal models (for example statistical models) of natural language phenomena, and of how to design algorithms that implement these models.')

    In [14]: for np in test_doc.noun_chunks:

    print(np)

    ....:

    Natural language processing

    Natural language processing (NLP) deals

    the application

    computational models

    text

    speech

    data

    Application areas

    NLP

    automatic (machine) translation

    languages

    dialogue systems

    a human

    a machine

    natural language

    information extraction

    the goal

    unstructured text

    structured (database) representations

    flexible ways

    NLP technologies

    a dramatic impact

    the way

    people

    computers

    the way

    people

    the use

    language

    the way

    people

    the vast amount

    linguistic data

    electronic form

    a scientific viewpoint

    NLP

    fundamental questions

    formal models

    example

    natural language phenomena

    algorithms

    these models

    基于词向量计算两个单词的相似度:

    In [15]: test_doc = nlp(u"Apples and oranges are similar. Boots and hippos aren't.")

    In [16]: apples = test_doc[0]

    In [17]: print(apples)

    Apples

    In [18]: oranges = test_doc[2]

    In [19]: print(oranges)

    oranges

    In [20]: boots = test_doc[6]

    In [21]: print(boots)

    Boots

    In [22]: hippos = test_doc[8]

    In [23]: print(hippos)

    hippos

    In [24]: apples.similarity(oranges)

    Out[24]: 0.77809414836023805

    In [25]: boots.similarity(hippos)

    Out[25]: 0.038474555379008429

    当然,spaCy还包括句法分析的相关功能等。另外值得关注的是 spaCy 从1.0版本起,加入了对深度学习工具的支持,例如 Tensorflow 和 Keras 等,这方面具体可以参考官方文档给出的一个对情感分析(Sentiment Analysis)模型进行分析的例子:Hooking a deep learning model into spaCy.

    展开全文
  • 2.分词jieba.cut 方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型jieba.cut_for_search 方法接受两个参数:需要分词的字符串;是否使用 HMM 模型...
  • jieba.cut 方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型jieba.cut_for_search 方法接受两个参数:需要分词的字符串;是否使用 HMM 模型。该...
  • .net中文分词 jieba.NET

    2019-04-10 17:32:00
    在做文本分析相关的事情时免不了进行中文分词,于是就遇到了用Python实现的结巴中文分词jieba使用起来非常简单,同时分词的结果也令人印象深刻,有兴趣的可以到它的在线演示站点体验下(注意第三行文字)。 .NET...
  • Python中文分词 jieba

    2019-03-08 19:05:34
    作者:Font Tian 来源:CSDN ...版权声明:本文为博主原创文章,转载请附上博文链接!...jieba 基于Python的中文分词工具,安装使用非常方便,直接pip即可,2/3都可以,功能强悍,博主十分推荐 github:https://github.com...
  • 中文分词 jieba和HanLP

    千次阅读 2018-10-23 10:43:54
    使用jieba进行分词 import jieba content = "现如今,机器学习和深度学习带动人工智能飞速的发展,并在图片处理、语音识别领域取得巨大成功。" # cut_all 参数用来控制是否采用全模式 segs_1 ...
  • import jieba jieba.lcut("你好世界") 输出:
  • 整体介绍jieba 基于Python的中文分词工具,安装使用非常方便,直接pip即可,2/3都可以,功能强悍,博主十分推荐github:https://github.com/fxsjy/jieba开源中国地址:http://www.oschina.net/p/jieba/?fromerr=LRXZzk9z写...
  • Python 中文分词 jieba(小白进)

    千次阅读 多人点赞 2018-06-03 20:00:34
    import jieba # 将要被切词的文本 sentence = '金融数据分析' # 创建【生成器】对象 generator = jieba.cut(sentence) print(generator) print结果: &...
  • import jiebaimport jieba.analyseimport jieba.posseg as psegimport timefilename='2.txt'def file_jieba_wordcout(filename): file=open(filename,'r').read() file=jieba.cut(file) dict={} for wor...
  • python中文分词jieba的高级应用

    千次阅读 2015-11-01 22:35:18
    最近在使用python的中文分词功能,感觉jieba挺不错的,就转载了这篇文章,希望对各位CSDN网友有所帮助。 jieba "结巴"中文分词:做最好的Python中文分词组件 "Jieba"  Feature 支持三种分词模式: ...
  • 中文分词jieba python 学习

    千次阅读 2017-04-20 17:36:28
    结巴分词来进行文本分析

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,038
精华内容 1,215
关键字:

中文分词jieba