精华内容
下载资源
问答
  • cf=open("D:\A仲敏2015\python_code\天龙八部.txt",encoding='gb18030',errors='ignore') cf1=cf.read() cf_test=cf1[1000:1100] df_ceshi=jieba.cut(df_test) cf_ceshi=jieba.cut(cf_test) cf_r=" ".join(cf_ceshi)...
    #coding=utf-8
    #coding=gbk
    import pandas as pd
    import jieba
    import codecs
    import pandas as pd
    
    #decode_set=['ANSI','utf-8','gb18030','ISO-8859-2','gb2312','gbk','Error']
    
        
    df=open("D:\A仲敏2015\python_code\飞狐外传.txt")
    df1=df.read()#open与read放在一起,read只能用一次
    df_test=df1[1000:1100]
    cf=open("D:\A仲敏2015\python_code\天龙八部.txt",encoding='gb18030',errors='ignore')
    cf1=cf.read()
    cf_test=cf1[1000:1100]
    df_ceshi=jieba.cut(df_test)
    cf_ceshi=jieba.cut(cf_test)
    cf_r=" ".join(cf_ceshi)
    df_r=" ".join(df_ceshi)
    ##引入停用词
    import re
    stop_words=open("D:\A仲敏2015\python_code\stop_words.txt")
    stop_content=stop_words.read()#现实内容
    stop_list=stop_content.splitlines()#将停用词表转化为list
    stop_words.close()
    
    ##scikit-learn向量化
    ##特征处理的方法,向量化与Hash Trick
    ##用scikit-learn的TfidfVectorizer类来进行TF-IDF特征处理。
    import sklearn
    from sklearn.feature_extraction.text import TfidfVectorizer
    corpus=[cf_r,df_r]
    vector=TfidfVectorizer(stop_words=stop_list)#将停词引入模型
    tfidf=vector.fit_transform(corpus)#模型向量化
    ###每次词和TF-IDF的对应关系
    wordlist=vector.get_feature_names()#获取词带模型中的所有词
    weightlist=tfidf.toarray()#将tf-idf矩阵抽取出来,元素a[i][j]表示j词在i类文本中的tf-idf权重  
    
    for i in range(len(weightlist)):
        print(".......第 %s 段文本的词语ti-idf权重........."%i)
        for j in range(len(wordlist)):
            print(wordlist[j],weightlist[i][j])
    
    
    #词袋模型向量化方法二
    #用scikit-learn的CountVectorizer类完成词频统计和向量化
    
    from sklearn import feature_extraction  
    from sklearn.feature_extraction.text import TfidfTransformer  
    from sklearn.feature_extraction.text import CountVectorizer
    vectorizer=CountVectorizer(stop_words=stop_list)#该类会将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在i类文本下的词频  
    transformer=TfidfTransformer()#该类会统计每个词语的tf-idf权值  
    tfidf=transformer.fit_transform(vectorizer.fit_transform(corpus))#第一个fit_transform是计算tf-idf,第二个fit_transform是将文本转为词频矩阵  
    word=vectorizer.get_feature_names()#获取词袋模型中的所有词语  
    weight=tfidf.toarray()#将tf-idf矩阵抽取出来,元素a[i][j]表示j词在i类文本中的tf-idf权重  
    
    for i in range(len(weight)):
        print(".......第 %s 段文本的词语ti-idf权重........."%i)
        for j in range(len(word)):
            print(wordlist[j],weightlist[i][j])
    
    ##查看编码类型
    import chardet         
    chardit1 = chardet.detect(f)#f为查看编码的文件
    print (chardic1['encoding'])
    
    ###python批量读取txt文件
    import os  
    import re  
    import sys  
    import glob  
    import os  
    def open_allfile(path,filetype):  
        data=[]  
        read_files=glob.glob(path+'*'+filetype)  
        for i in read_files:  
            with open(i,encoding='gb18030',errors='ignore') as infile:  
                data.append(infile.read())  
        return data 
    
    #定义函数用于,获得文件名
    def get_filename(path,filetype):  
        import os  
        name=[]  
        for root,dirs,files in os.walk(path):  
            for i in files:  
                if filetype in i:  
                    name.append(i.replace(filetype,''))   
        return name  
    
    #测试
    path1='D:\A仲敏2015\python_code\批量文本\\'  
    filetype2='.txt'  
    data1=open_allfile(path1,filetype2)  
    name2=get_filename(path1,filetype2)  
    print name2 
    
    Rs2=[] #建立存储分词的列表  
    for i in range(len(data1)):  
        result=[]  
        seg_list = jieba.cut(data1[i])  
        for w in seg_list :#读取每一行分词  
            result.append(w)  
        Rs2.append(result)#
    #建立存储分词的列表 方法二
    data=['str']*len(data1)
    for da in data1:
        sen=[]
        cut=jieba.cut(da)
       # sen=' '.join(cut)
       
        data=data.append(sen)
    

    展开全文
  • 自然语言处理理论书籍很多,讲实际操作的不多,能讲的这么系统的更少。Python语言在做NLP方面有较明显的优势。之前国外有《Natural Language Process with Python》,国内热心网友将其翻译为中文版。从这个角度讲,...

    自然语言处理理论书籍很多,讲实际操作的不多,能讲的这么系统的更少。Python语言在做NLP方面有较明显的优势。之前国外有《Natural Language Process with Python》,国内热心网友将其翻译为中文版。从这个角度讲,本书是目前世界上最好的自然语言处理实践教程。初学者若在看过理论之后能精读本书,必定会有获益。这也是翻译本书的目的之一。通过使用Python程序设计语言和自然语言工具包(NTLK)的开源库,本书将帮助你增加自然语言处理的实际经验。如果你对开发Web应用、分析多语言的新闻源或编制濒危语言感兴趣,或者只是想要从程序员的视角看人类语言如何运作,你将发现本书不仅有趣而且极其有用。

    python自然语言处理目录

    第1章 语言处理与Python

    1.1 语言计算:文本和词汇

    1.2 近观Python:将文本当做词链表

    1.3 计算语言:简单的统计

    1.4 回到Python:决策与控制

    1.5 自动理解自然语言

    1.6 小结

    1.7 深入阅读

    1.8 练习

    第2章 获得文本语料和词汇资源

    2.1 获取文本语料库

    2.2 条件频率分布

    2.3 更多关于Python:代码重用

    2.4 词典资源

    2.5 WordNet

    2.6 小结

    2.7 深入阅读

    2.8 练习

    第3章 处理原始文本

    3.1 从网络和硬盘访问文本

    3.2 字符串:最底层的文本处理

    3.3 使用Unicode进行文字处理

    3.4 使用正则表达式检测词组搭配

    3.5 正则表达式的有益应用

    3.6 规范化文本

    3.7 用正则表达式为文本分词

    3.8 分割

    3.9 格式化:从链表到字符串

    3.10 小结

    3.11 深入阅读

    3.12 练习

    第4章 编写结构化程序

    4.1 回到基础

    4.2 序列

    4.3 风格的问题

    4.4 函数:结构化编程的基础

    4.5 更多关于函数

    4.6 程序开发

    4.7 算法设计

    4.8 Python库的样例

    4.9 小结

    4.10 深入阅读

    4.11 练习

    第5章 分类和标注词汇

    5.1 使用词性标注器

    5.2 标注语料库

    5.3 使用Python字典映射词及其属性

    5.4 自动标注

    5.5 N-gram标注

    5.6 基于转换的标注

    5.7 如何确定一个词的分类

    5.8 小结

    5.9 深入阅读

    5.10 练习

    第6章 学习分类文本

    6.1 监督式分类

    6.2 监督式分类的举例

    6.3 评估

    6.4 决策树

    6.5 朴素贝叶斯分类器

    6.6 最大熵分类器

    6.7 为语言模式建模

    6.8 小结

    6.9 深入阅读

    6.10 练习

    第7章 从文本提取信息

    7.1 信息提取

    7.2 分块

    7.3 开发和评估分块器

    7.4 语言结构中的递归

    7.5 命名实体识别

    7.6 关系抽取

    7.7 小结

    7.8 深入阅读

    7.9 练习

    第8章 分析句子结构

    8.1 一些语法困境

    8.2 文法的用途

    8.3 上下文无关文法

    8.4 上下文无关文法分析

    8.5 依存关系和依存文法

    8.6 文法开发

    8.7 小结

    8.8 深入阅读

    8.9 练习

    第9章 建立基于特征的文法

    9.1 文法特征

    9.2 处理特征结构

    9.3 扩展基于特征的文法

    9.4 小结

    9.5 深入阅读

    9.6 练习

    第10章 分析语句的含义

    10.1 自然语言理解

    10.2 命题逻辑

    10.3 一阶逻辑

    10.4 英语语句的语义

    10.5 段落语义层

    10.6 小结

    10.7 深入阅读

    10.8 练习

    第11章 语言数据管理

    11.1 语料库结构:案例研究

    11.2 语料库生命周期

    11.3 数据采集

    11.4 使用XML

    11.5 使用Toolbox数据

    11.6 使用OLAC元数据描述语言资源

    11.7 小结

    11.8 深入阅读

    11.9 练习

    PC官方版

    安卓官方手机版

    IOS官方手机版

    展开全文
  • Python自然语言处理只需要5行代码

    千次阅读 多人点赞 2020-03-23 20:43:12
    Python自然语言处理只需5行代码 一、前言 人工智能是Python语言的一大应用热门,而自然语言处理又是人工智能的一大方向。 自然语言处理( natural language processing )简称NLP,是研究人同计算机之间用自然语言...

    Python自然语言处理只需要5行代码

    一、前言

    人工智能是Python语言的一大应用热门,而自然语言处理又是人工智能的一大方向。 自然语言处理( natural language processing )简称NLP,是研究人同计算机之间用自然语言通信的一种方法。我们都知道,计算机本质上只认识0和1,但是通过编程语言我们可以使用编程语言同计算机交流。这实际上就是程序员同计算机之间的通信,而我们日常生活中使用的是自然语言,是一种带有情感的语言。那么要怎么使计算机理解这种带有情感的语言呢?这就是自然语言处理研究的内容了。

    语言的情绪识别是自然语言处理的一种操作,如果要我们从0开始实现情绪识别是比较繁琐的。首先我们需要准备好足够的数据,为了让计算机更好的理解,我们还需要对数据进行预处理,之后需要训练数据,有了训练数据我们才能开始情绪识别。识别的准确率在于数据的相关性和数据量,数据相关性越高,数据量越大,识别的准确率就越高。

    然而,我们使用paddlehub可以很快的实现情绪识别,我们先看看如何安装。

    二、安装paddlehub

    paddlehub是百度飞桨PaddlePaddle中的一个模型库,使用paddlepaddle可以很快的实现多种多样的操作,其中就有我们今天要说到的文字情绪识别,而且代码非常简单。首先我们需要安装paddlepaddle,我们进入官网 https://www.paddlepaddle.org.cn/install/quick ,进入官网后可以看到如下界面:

    在这里插入图片描述

    我们可以根据自己Python版本,计算机系统等选择安装方式。关于paddlepaddle支持版本等信息可以在官网中查看,这里就不赘述了。我使用的是Python3.7,这里直接使用pip安装,我们在控制台执行下列语句

    python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
    

    然后在控制台查看是否安装成功。先输入Python,然后执行import paddle.fluid,再执行 paddle.fluid.install_check.run_check()如下:

    C:\Users\zaxwz>python
    Python 3.7.6 (tags/v3.7.6:43364a7ae0, Dec 19 2019, 00:42:30) [MSC v.1916 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import paddle.fluid
    >>> paddle.fluid.install_check.run_check()
    

    如果显示Your Paddle is installed successfully! Let's start deep Learning with Paddle now就表示安装成功了。另外我们还需要安装paddlehub,这里同样是使用pip安装,执行语句如下:

    pip install -i https://mirror.baidu.com/pypi/simple paddlehub
    

    把paddlepaddle和paddlehub安装成功后我们就可以开始写代码了。

    三、情绪识别

    (1)情绪识别

    使用paddlehub完成情绪识别的步骤如下:

    1. 导入模块
    2. 加载模型
    3. 准备句子
    4. 识别情绪

    而完成上面的步骤只需要四行代码,另外我们需要输出一下识别的结果,一共就是五行代码,下面让我们看看这五行神奇的代码:

    # 导入模块
    import paddlehub as hub
    # 加载模型
    senta = hub.Module(name='senta_lstm')
    # 准备句子
    sentence = ['你真美']
    # 情绪识别
    result = senta.sentiment_classify(data={"text":sentence})
    # 输出识别结果
    print(result)
    

    识别结果如下:

    [{'text': '你真美', 'sentiment_label': 1, 'sentiment_key': 'positive', 'positive_probs': 0.9602, 'negative_probs': 0.0398}]
    

    我们可以看到准备的句子是列表类型,识别的结果也是列表类型,结果中列表的元素是一个字典。在这个字典列表中,就包含了我们识别的结果。下面我们来分析一下这个字典。

    (2)结果分析

    结果字典中包含了4个字段,我们以表格的形式展示一下:

    字段名称 字段含义 解释
    text 识别的源文本 识别的源文本
    sentiment_label 分类标签 1为积极,0为消极
    sentiment_key 分类结果 positive为积极,negative为消极
    positive_probs 积极率 情绪为积极的可能性
    negative_probs 消极率 情绪为消极的可能性

    上面的表格是本人编的,用词不当的地方多见谅。我们对照上述表可以分析一下我们上述程序的结果。其含义就是语句“你真美”中包含了积极的情绪。我们再多看几个例子:

    import paddlehub as hub
    
    senta = hub.Module(name='senta_lstm')
    
    sentence = [
        '你真美',
        '你真丑',
        '我好难过',
        '我不开心',
        '这个游戏好好玩',
        '什么垃圾游戏',
    ]
    
    results = senta.sentiment_classify(data={"text":sentence})
    
    for result in results:
        print(result)
    

    识别结果如下:

    {'text': '你真美', 'sentiment_label': 1, 'sentiment_key': 'positive', 'positive_probs': 0.9602, 'negative_probs': 0.0398}
    {'text': '你真丑', 'sentiment_label': 0, 'sentiment_key': 'negative', 'positive_probs': 0.0033, 'negative_probs': 0.9967}
    {'text': '我好难过', 'sentiment_label': 1, 'sentiment_key': 'positive', 'positive_probs': 0.5324, 'negative_probs': 0.4676}
    {'text': '我不开心', 'sentiment_label': 0, 'sentiment_key': 'negative', 'positive_probs': 0.1936, 'negative_probs': 0.8064}
    {'text': '这个游戏好好玩', 'sentiment_label': 1, 'sentiment_key': 'positive', 'positive_probs': 0.9933, 'negative_probs': 0.0067}
    {'text': '什么垃圾游戏', 'sentiment_label': 0, 'sentiment_key': 'negative', 'positive_probs': 0.0108, 'negative_probs': 0.9892}
    

    上面有6个句子,大多数都成功识别了情绪,但是我好难过识别的结果为积极,很明显是错误的。总体来说,对于简单语句的识别还是比较准的。另外,如果对识别的准确率不满的话,我们还可以训练自己的数据集,详细操作可以参考项目地址 https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/sentiment_classification

    另外在这里顺便给大家免费发点福利:

    在这里插入图片描述

    哈哈,你没有听错苦逼的我也有助理了。

    展开全文
  • python自然语言处理-WordNet

    千次阅读 2017-04-17 11:28:16
    python自然语言处理 书中-WordNet这个小程序有点bug

            书中-WordNet这个小程序有点bug,可能是python语言版本的问题,我电脑Python版本(Python 3.6.1

    >>> from nltk.corpus import wordnet as wn
    >>> wn.synsets('motorcar')
    [Synset('car.n.01')]
    >>> wn.synset('car.n.01').lemma_names
    <bound method Synset.lemma_names of Synset('car.n.01')>

            按照书上的方法得出的结果有误,lemma_names在这里是一个方法(ps:后面的definition,example .... 修改方式也一样),上面的代码应该改为:

    >>> from nltk.corpus import wordnet as wn
    >>> wn.synsets('motorcar')
    [Synset('car.n.01')]
    >>> wn.synset('car.n.01').lemma_names()
    ['car', 'auto', 'automobile', 'machine', 'motorcar']
           car.n.01 是car的一个名词意义,被称之为同义词集,也就是意义相同的词(或词条)的集合。 后面我们可以用definition()这个对同义词集进行解释:

    >>> wn.synset('car.n.01').definition()
    'a motor vehicle with four wheels; usually propelled by an internal combustion engine'

            还可以进行例句(造句):

    >>> wn.synset('car.n.01').examples()
    ['he needs a car to get to work']


            我们想得到car.n.01同义词集下面的所有词条可以通过下面的:

    >>> wn.synset('car.n.01').lemmas()
    [Lemma('car.n.01.car'), Lemma('car.n.01.auto'), Lemma('car.n.01.automobile'), Lemma('car.n.01.machine'), Lemma('car.n.01.motorcar')]

            查找特定的词条:

    >>> wn.lemma('car.n.01.automobile')
    Lemma('car.n.01.automobile')
        

            我们也可以往回得到特定 词条的 同义词集:

    >>> wn.lemma('car.n.01.automobile').synset()
    Synset('car.n.01')
         

             也可以得到该词条的名字:

             

    >>> wn.lemma('car.n.01.automobile').name()
    'automobile'


            这里我们又多一个新的概念叫“下位词”,解释如下:
    下位词(hyponym),指概念上内涵更窄的主题词。 例如:”鲜花速递”的下位词包括”上海鲜花速递” 、”深圳鲜花速递”、 ”网上鲜花速递”,”笨小孩”是”歌”的下位词,”笨小孩”是”刘德华”的下位词。 ++ 下位词是相对某主题词的,也有它自己的等同词、上位词、下位词、同类词。
            
    >>> motorcar = wn.synset('car.n.01')
    >>> types_of_motorcar=motorcar.hyponyms()
    >>> types_of_motorcar[26]
    Synset('stanley_steamer.n.01')
    >>> sorted([lemma.name() for synset in types_of_motorcar for lemma in synset.lemmas()])
    ['Model_T', 'S.U.V.', 'SUV', 'Stanley_Steamer', 'ambulance', 'beach_waggon', 'beach_wagon', 'bus', 'cab', 'compact', 'compact_car', 'convertible', 'coupe', 'cruiser', 'electric', 'electric_automobile', 'electric_car', 'estate_car', 'gas_guzzler', 'hack', 'hardtop', 'hatchback', 'heap', 'horseless_carriage', 'hot-rod', 'hot_rod', 'jalopy', 'jeep', 'landrover', 'limo', 'limousine', 'loaner', 'minicar', 'minivan', 'pace_car', 'patrol_car', 'phaeton', 'police_car', 'police_cruiser', 'prowl_car', 'race_car', 'racer', 'racing_car', 'roadster', 'runabout', 'saloon', 'secondhand_car', 'sedan', 'sport_car', 'sport_utility', 'sport_utility_vehicle', 'sports_car', 'squad_car', 'station_waggon', 'station_wagon', 'stock_car', 'subcompact', 'subcompact_car', 'taxi', 'taxicab', 'tourer', 'touring_car', 'two-seater', 'used-car', 'waggon', 'wagon']
           
            







    展开全文
  • Python自然语言处理-BERT模型实战

    千人学习 2019-10-21 21:54:40
    购买课程后,添加小助手微信(微信号:itxy41)回复【唐宇迪】 进入学习群,获取唐宇迪老师答疑 Python自然语言处理-BERT模型实战课程旨在帮助同学们快速掌握当下NLP领域最核心的算法模型BERT的原理构造与应用实例。...
  • Python自然语言处理工具汇总

    千次阅读 2016-07-04 19:24:11
    Python 自然语言处理(NLP)工具汇总NLTK 简介: NLTK 在使用 Python 处理自然语言的工具中处于领先的地位。它提供了 WordNet 这种方便处理词汇资源的接口,以及分类、分词、词干提取、标注、语法分析、语义推理等...
  • 出版社: 机械工业出版社 ISBN:9787111597674 出版时间:2018-06-01 作者:涂铭,刘祥,刘树春 Python自然语言处理实战
  • Python自然语言处理(NLP)工具小结

    万次阅读 2018-01-03 14:00:51
    Python 的几个自然语言处理工具自然语言处理(Natural Language Processing,简称NLP)是人工智能的一个子域。自然语言处理的应用包括机器翻译、情感分析、智能问答、信息提取、语言输入、舆论分析、知识图谱等方面...
  • python 自然语言处理实战

    千次阅读 2019-04-15 18:46:28
    Jibea ... ... ...先看什么是文档频率,文档频率DF就是一个词在整个文库词典中出现的...Abstraction是生成式自动文摘方法,通过建立抽象的语意表示,使用自然语言生成技术,形成摘要 LSA(SVD奇异值分解) LDA(贝叶斯)
  • python自然语言处理-就职演说语料库

    千次阅读 2017-04-13 15:24:29
    python自然语言处理-就职演说语料库,小程序统计词汇america和citizen随时间推移的使用情况这个小程序有点小bug
  • 自然语言处理中一个很重要的操作就是所谓的stemming和lemmatization,二者非常类似。它们是词形规范化的两类重要方式,都能够达到有效归并词形的目的,二者既有联系也有区别。 1、词干提取(stemming) 定义:...
  • python自然语言处理之加载本地语料库 from nltk.corpus import PlaintextCorpusReader # 语料库本地目录 coupus_root = "E:\\guoby\\temp\\dict" # 加载文件过滤 file_pattern = '.*' wodslist = ...
  • 字典树---Python自然语言处理(3)

    千次阅读 2021-03-18 12:31:29
    自然语言处理中,字符串集合常用字典树存储,这是一种字符串上的树形数据结构。字典树中每条边都对应一个字,从根节点往下的路径构成一个个字符串。 字典树并不直接在节点上存储字符串,而是将词语视作根节点到某...
  • 本文简要介绍Python自然语言处理(NLP),使用Python的NLTK库。NLTK是Python的自然语言处理工具包,在NLP领域中,最常使用的一个Python库。 什么是NLP? 简单来说,自然语言处理(NLP)就是开发能够理解人类语言的应用...
  • 目前开源的自然语言处理工具有NLTK,CoreNLP,LTP,HanLP。对于我们中国的程序员来说,一般使用哈工大的LTP,或者使用开源的HanLP。 我们后续的讲解都是基于HanLP工具,它具有词法分析,句法分析,关键词提取以及...
  • 所以,进行自然语言处理时,我们一般将停用词过滤掉。 而HanLP库提供了一个小巧的停用词字典,它位于Lib\site-packages\pyhanlp\static\data\dictionary目录中,名字为:stopwords.txt。该文本收录了常见的中英文...
  • 切分算法---Python自然语言处理(2)

    千次阅读 2021-03-17 18:05:07
    一般来说,一句话肯定包含多个词语,它们互相重叠,具体输出哪一个由自然语言的切分算法决定。常用的切分算法有完全切分、正向最长匹配、逆向最长匹配以及双向最长匹配。 本篇博文将一一介绍这些常用的切分算法。 ...
  • 本文实例讲述了Python自然语言处理 NLTK 库用法。分享给大家供大家参考,具体如下: 在这篇文章中,我们将基于 Python 讨论自然语言处理(NLP)。本教程将会使用 Python NLTK 库。NLTK 是一个当下流行的,用于自然...
  • python自然语言处理入门教程(一)

    千次阅读 2015-07-06 16:30:19
    文章详细介绍了windows环境下,使用python语言借助于NLTK工具包进行自然语言处理任务。包括环境搭建以及常用函数的介绍。
  • python自然语言处理-马尔科夫模型

    千次阅读 2017-10-11 09:01:37
    本部分通过继续处理总统演讲稿的内容,提出了马尔科夫模型,并通过实例介绍了如何进行文本分析与写作。如何生成并使用一个马尔科夫链
  • Python自然语言处理工具小结

    千次阅读 2017-11-28 10:28:52
    1 Python 的几个自然语言处理工具 NLTK:NLTK 在用 Python 处理自然语言的工具中处于领先的地位。它提供了 WordNet 这种方便处理词汇资源的借口,还有分类、分词、除茎、标注、语法分析、语义推理等类库。...
  • Python处理自然语言处理第一章简单示例

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 62,173
精华内容 24,869
关键字:

python自然语言处理代码

python 订阅