nltk

Python NLP Text Tokenization based on custom regex

五迷三道 提交于 2020-05-09 16:00:03
问题 I am processing large amount of text for custom (NER) Named Entity Recognition using Spacy. For text pre-processing I am using nltk for tokenization..etc. I am able to process one of my custom entities which is based on simple strings. But the other custom entity is a combination of number and certain text (20 BBLs for example). The word_tokenize method from nltk.tokenize tokenizes 20 and 'BBLs' separately each as a separate token. What I want is to treat them (the number and the 'BBLs'

文本特征提取---词袋模型,TF-IDF模型,N-gram模型(Text Feature Extraction Bag of Words TF-IDF N-gram )

十年热恋 提交于 2020-05-06 01:48:50
假设有一段文本:"I have a cat, his name is Huzihu. Huzihu is really cute and friendly. We are good friends." 那么怎么提取这段文本的特征呢? 一个简单的方法就是使用 词袋 模型 ( bag of words model )。选定文本内一定的词放入词袋,统计词袋内所有词在文本中出现的次数(忽略语法和单词出现的顺序),将其用向量的形式表示出来。 词频统计可以用scikit-learn的 CountVectorizer 实现: text1= " I have a cat, his name is Huzihu. Huzihu is really cute and friendly. We are good friends. " from sklearn.feature_extraction.text import CountVectorizer CV = CountVectorizer() words =CV.fit_transform([text1]) # 这里注意要把文本字符串变为列表进行输入 print (words) 首先CountVectorizer将文本映射成字典,字典的键是文本内的词,值是词的索引,然后对字典进行学习,将其转换成词频矩阵并输出: (0, 3) 1 (0, 4) 1

机器学习经典算法之朴素贝叶斯分类

北城余情 提交于 2020-05-06 01:25:57
很多人都听说过贝叶斯原理,在哪听说过?基本上是在学概率统计的时候知道的。有些人可能会说,我记不住这些概率论的公式,没关系,我尽量用通俗易懂的语言进行讲解。 /*请尊重作者劳动成果,转载请标明原文链接:*/ /* https://www.cnblogs.com/jpcflyer/p/11069659.html * / 贝叶斯原理是英国数学家托马斯·贝叶斯提出的。贝叶斯是个很神奇的人,他的经历类似梵高。生前没有得到重视,死后,他写的一篇关于归纳推理的论文被朋友翻了出来,并发表了。这一发表不要紧,结果这篇论文的思想直接影响了接下来两个多世纪的统计学,是科学史上著名的论文之一。 贝叶斯原理跟我们的生活联系非常紧密。举个例子,如果你看到一个人总是花钱,那么会推断这个人多半是个有钱人。当然这也不是绝对,也就是说,当你不能准确预知一个事物本质的时候,你可以依靠和事物本质相关的事件来进行判断,如果事情发生的频次多,则证明这个属性更有可能存在。 一、 贝叶斯原理 贝叶斯原理是怎么来的呢?贝叶斯为了解决一个叫“逆向概率”问题写了一篇文章,尝试解答在没有太多可靠证据的情况下,怎样做出更符合数学逻辑的推测。 什么是“逆向概率”呢? 所谓“逆向概率”是相对“正向概率”而言。正向概率的问题很容易理解,比如我们已经知道袋子里面有 N 个球,不是黑球就是白球,其中 M 个是黑球,那么把手伸进去摸一个球

python+NLTK 自然语言学习处理八:分类文本一

风格不统一 提交于 2020-05-04 23:31:16
从这一章开始将进入到关键部分:模式识别。这一章主要解决下面几个问题 1 怎样才能识别出语言数据中明显用于分类的特性 2 怎样才能构建用于自动执行语言处理任务的语言模型 3 从这些模型中我们可以学到那些关于语言的知识。 监督式分类: 分类是为给定的输入选择正确的类标签。就好比身份证上的身份证号。每个身份证号都能标识出对应的一个人。在比如我们从一个固定的主题领域列表中,如 “ 体育 ” , “ 技术 ” 和 “ 政治 ” 来判断新闻报道的主题是什么 下图是监督式分类的框架图。在训练过程中,特征提取器将每一个输入值转换为特征集。这些特征集捕捉到每个输入中应被用于分类的基本信息。然后特征集与标签的配对放入到机器学习算法中,生成模型。 在之前的章节中,我们从 nltk.corpus.names 能够获得 2 个文件,分别是 male.txt 和 female.txt 。从里面的结果可以看到男性和女性的名字有各自鲜明的特点。以 a,e,i 结尾的姓名很可能是女性姓名。而以 k,o,r,s 结尾的姓名很可能是男性姓名。因此我们要区分人名是男性还是女性,就需要建立一个分类器从而更精确的模拟这些差异。 创建分类器的第一步是决定什么样的输入特征相关的。以及如何为这些特征编码,下面的例子从寻找给定名称的最后一个字母开始。建立一个特征提取器函数,这个函数返回一个字典,其中包含给定名称的相关信息 def

NLP中文短文本处理记录(一)

大憨熊 提交于 2020-05-04 07:23:38
数据清洗 更新 NLP短文本处理 (第一天参考文章)[https://blog.csdn.net/eastmount/article/details/50473675] 总结以上两个Tip如何删除停用词 NLP之文本清洗 NLP一些常用词 待读文章 第二天学习 封装中文分词 数据清洗 写代码前要想好数据该用什么格式输出,最好在纸上画出来,然后想如何能实现 更新 read_csv()读取含中文的csv文件时, encoding='utf-8'或'gb18030' , 会遇到有的行无法读出,增加参数 error_bad_lines=False 处理不规范的json文件 import json mess=[] with open( '谣言.json' , 'r' ,encoding= 'utf-8' ) as f: lines=f.readlines() i= 0 for line in lines: print(line) data=json.loads(line) mess.append(data) #i+=1 #if i>200: #break print(mess) 莫凡Python NLP短文本处理 强烈推荐 KDnuggets系列数据分析、NLP、机器学习文章 系列NLTK文章,没看 (第一天参考文章)[ https://blog.csdn.net/eastmount

windows10环境下搭建python2.7.5+nltk开发环境

不打扰是莪最后的温柔 提交于 2020-05-01 06:10:23
nltk(Natural Language Tookit)实际上是python的一个开发包。 对于自然语言处理任务非常有用。 =============================================================================================== NLTK 2.0官网 : http://nltk.org/install.html =============================================================================================== 在windows 32-bit 下的安装步骤如下: 1、Install Python 2、Install Numpy (optional) 3、Install NLTK 4、Install PyYAML 5、Test installation: Start>Python27, then type import nltk =============================================================================================== 1、首先,安装python 2.7 详见 http://blog.sina.com.cn/s

Python分词、情感分析工具——SnowNLP

血红的双手。 提交于 2020-04-29 20:59:43
本文内容主要参考GitHub:https://github.com/isnowfy/snownlp what's the SnowNLP   SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是,这里没有用NLTK,所有的算法都是自己实现的,并且自带了一些训练好的字典。 注意本程序都是处理的unicode编码,所以使用时请自行decode成unicode。 安装 pip install snownlp 主要用法 # 导入SnowNLP库 from snownlp import SnowNLP # 需要操作的句子 text = ' 你站在桥上看风景,看风景的人在楼上看你。明月装饰了你的窗子,你装饰了别人的梦 ' s = SnowNLP(text) # 分词 print (s.words) 主要功能 中文分词( Character-Based Generative Model ) 词性标注( TnT 3-gram 隐马) 情感分析(现在训练数据主要是买卖东西时的评价,所以对其他的一些可能效果不是很好,待解决) 文本分类(Naive Bayes) 转换成拼音(Trie树实现的最大匹配) 繁体转简体(Trie树实现的最大匹配

机器学习基础——带你实战朴素贝叶斯模型文本分类

别来无恙 提交于 2020-04-18 07:40:30
本文始发于个人公众号: TechFlow <br> 上一篇文章当中我们介绍了 朴素贝叶斯模型的基本原理 。 <br> 朴素贝叶斯的核心本质是假设样本当中的变量 服从某个分布 ,从而利用条件概率计算出样本属于某个类别的概率。一般来说一个样本往往会含有许多特征,这些特征之间很有可能是有相关性的。为了简化模型,朴素贝叶斯模型 假设这些变量是独立的 。这样我们就可以很简单地计算出样本的概率。 <br> 想要回顾其中细节的同学,可以点击链接回到之前的文章: 机器学习基础——让你一文学会朴素贝叶斯模型 <br> 在我们学习算法的过程中,如果只看模型的原理以及理论,总有一些纸上得来终觉浅的感觉。很多时候,道理说的头头是道,可是真正要上手的时候还是会一脸懵逼。或者是勉强能够搞一搞,但是过程当中总会遇到这样或者那样各种意想不到的问题。一方面是我们动手实践的不够, 另一方面也是理解不够深入。 <br> 今天这篇文章我们实际动手实现模型,并且在 真实的数据集 当中运行,再看看我们模型的运行效果。 <br> <br> 朴素贝叶斯与文本分类 <br> 一般来说,我们认为 狭义的事件 的结果应该是有限的,也就是说事件的结果应该是一个 离散值 而不是连续值。所以早期的贝叶斯模型,在引入高斯混合模型的思想之前,针对的也是离散值的样本(存疑,笔者推测)。所以我们先抛开连续特征的场景,先来看看在离散样本当中

nltk-比较中文文档相似度-完整实例

爷,独闯天下 提交于 2020-04-18 04:35:51
nltk同时也能处理中文的场景,只要做如下改动: 使用中文分词器(如我选用了结巴分词) 对中文字符做编码处理,使用unicode编码方式 python的源码编码统一声明为 gbk 使用支持中文的语料库 代码如下,需要jieba的支持 #!/usr/bin/env python #-*-coding=gbk-*- """ 原始数据,用于建立模型 """ #缩水版的courses,实际数据的格式应该为 课程名\t课程简介\t课程详情,并已去除html等干扰因素 courses = [ u'Writing II: Rhetorical Composing', u'Genetics and Society: A Course for Educators', u'General Game Playing', u'Genes and the Human Condition (From Behavior to Biotechnology)', u'A Brief History of Humankind', u'New Models of Business in Society', u'Analyse Numrique pour Ingnieurs', u'Evolution: A Course for Educators', u'Coding the Matrix: Linear

How to count the frequency of words existing in a text using nltk

混江龙づ霸主 提交于 2020-04-17 20:48:07
问题 I have a python script that reads the text and applies preprocess functions in order to do the analysis. The problem is that I want to count the frequency of words but the system crash and displays the below error. File "F:\AIenv\textAnalysis\setup.py", line 208, in tag_and_save file.write(word+"/"+tag+" (frequency="+str(freq_tagged_data[word])+")\n") TypeError: tuple indices must be integers or slices, not str I am trying to count the frequency and then write to a text file . def get_freq