#     文字特征提取 词库模型(bag of words) 2016年2月26,星期五
# 1.词库表示法
In [9]:
# sklearn 的 CountVectorizer类能够把文档词块化(tokenize),代码如下
from sklearn.feature_extraction.text import CountVectorizer
corpus=['UNC played Duke in basketball','Duke lost the basketball game','I ate a sandwich']
vectorizer=CountVectorizer()
corpusTotoken=vectorizer.fit_transform(corpus).todense()
corpusTotoken
#[[1, 1, 0, 1, 0, 1, 0, 1],
# [1, 1, 1, 0, 1, 0, 1, 0]]
vectorizer.vocabulary_
#{u'ate': 0,
# u'basketball': 1,
# u'duke': 2,
# u'game': 3,
# u'in': 4,
# u'lost': 5,
# u'played': 6,
# u'sandwich': 7,
# u'the': 8,
# u'unc': 9}
In [14]:
# 2. 计算向量之间的欧式距离,sklearn中引入euclidean_distances,代码如下:
from sklearn.metrics.pairwise import euclidean_distances
counts=vectorizer.fit_transform(corpus).todense()
for x,y in [[0,1],[0,2],[1,2]]:
dist=euclidean_distances(counts[x],counts[y])
print('文档{}与文档{}的距离{}'.format(x,y,dist)) #文档0与文档1的距离[[ 2.44948974]]
#文档0与文档2的距离[[ 2.64575131]]
#文档1与文档2的距离[[ 2.64575131]]
In [17]:
# 3.停用词过滤,停用词通常是构建文档意思的功能词汇,其字面意义并不体现。CountVectorizer类可以通过设置stop_words参数过滤停用词。默认是英语常用的停用词。代码如下
vectorizer=CountVectorizer(stop_words='english')
print(vectorizer.fit_transform(corpus).todense())
#[[0 1 1 0 0 1 0 1]
# [0 1 1 1 1 0 0 0]
# [1 0 0 0 0 0 1 0]]
print(vectorizer.vocabulary_)
#{u'duke': 2, u'basketball': 1, u'lost': 4, u'played': 5, u'game': 3, u'sandwich': 6, u'unc': 7, u'ate': 0}
 
#4. 词根还原与词性还原。特征向量里面的单词很多都是一个词的不同形式,比如jumping和jumps都是jump的不同形式。词根还原与词形还原就是为了将单词从不同的时态、派生形式还原。可利用Python里面的NLTK(Natural Language ToolKit)库来处理
In [28]:
import nltk
nltk.download()
 
showing info http://www.nltk.org/nltk_data/
Out[28]:
True
In [26]:
from nltk.stem.wordnet import WordNetLemmatizer
lemm=WordNetLemmatizer()
In [29]:
print(lemm.lemmatize('gathering'),'v')
print(lemm.lemmatize('gathering'),'n') #('gathering', 'v')
#('gathering', 'n')

利用Python进行文章特征提取(一)的更多相关文章

  1. 利用Python进行文章特征提取(二)

    本篇blog是利用Python进行文章特征提取的续篇,主要介绍构建带TF-IDF权重的文章特征向量. In [1]: # 带TF-IDF权重的扩展词库 # 在第一篇文档里 主要是利用词库模型简单判断单 ...

  2. 利用Python编写网络爬虫下载文章

    #coding: utf-8 #title..href... str0='blabla<a title="<论电影的七个元素>——关于我对电影的一些看法以及<后会无期 ...

  3. 有关利用python获取网页, 以及KDD近几年论文标题与摘要链接

    最近一直在看KDD的论文,不过,由于老师并没有什么合理的方向性,所以考虑把kdd中的大部分内容都利用python将所有标题.摘要获取下来. 还有一个原因在于,看acm上的摘要,都只显示了两行,再看多点 ...

  4. 用python定时文章发布wordpress

    用python定时文章发布wordpress: 流程: 采集 - 筛选文章 - wordpress文章发布. wordpress文章发布代码:python利用模块xmlrpclib发布文章非常便捷,省 ...

  5. 利用Python实现一个感知机学习算法

    本文主要参考英文教材Python Machine Learning第二章.pdf文档下载链接: https://pan.baidu.com/s/1nuS07Qp 密码: gcb9. 本文主要内容包括利 ...

  6. 利用python设计PDF报告,jinja2,whtmltopdf,matplotlib,pandas

    转自:https://foofish.net/python-crawler-html2pdf.html 工具准备 弄清楚了网站的基本结构后就可以开始准备爬虫所依赖的工具包了.requests.beau ...

  7. 如何利用Python网络爬虫抓取微信朋友圈的动态(上)

    今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的API接口,所以很容易找不到门.不过不要慌 ...

  8. 如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)

    前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入. 一.代码实现 1.修改Scrapy项目中的items.py ...

  9. 利用 Python + Selenium 实现对页面的指定元素截图(可截长图元素)

    对WebElement截图 WebDriver.Chrome自带的方法只能对当前窗口截屏,且不能指定特定元素.若是需要截取特定元素或是窗口超过了一屏,就只能另辟蹊径了. WebDriver.Phant ...

随机推荐

  1. 微信小程序将带来web程序员的春天!

    微信之父张小龙在年初那次演讲中曾表示:“我自己是很多年的程序员,我觉得我们应该为开发的团体做一些事情.”几个月后,微信正式推出微信应用号(即微信小程序)在互联网中掀起又一波热潮. 过去,对于很多开发者 ...

  2. C#:当前时间转换成文件名

    DateTime.Now.ToFileTime().ToString(); 结果是一个字符串,类似:131238643554094913.

  3. JAVA接口中不可以有静态方法吗

    1. 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错),所以不能含有静态代码块以及静态方法(用 ...

  4. pt-osc测试

    pt-osc测试 1.原表必须存在主键 PRIMARY KEY 或者 UNIQUE KEY The new table `darren`.`_t_user_new` does not have a P ...

  5. Python3.x:判断字符串是否为全数字、英文、大写、小写、空白字符

    Python3.x:判断字符串是否为全数字.英文.大写.小写.空白字符 判断接字符串是否为数字: str = raw_input("please input the number:" ...

  6. jQuery垂直缩略图相册插件 支持鼠标滑动翻页

    在线演示 本地下载

  7. 实验四Android开发

    实验四Java Android简易开发 实验准备 Android Studio 的下载: Android Studio 安装教程 在安装过程中的问题: 在下载了官网上的说明包含sdk的安装包之后找不到 ...

  8. zabbix监控使用

    zabbix监控 通过导入/导出zabbix配置文件,我们可以将自己写好的模板等配置在网络上分享,我们也可以导入网络上分享的配置文件,配置文件有两种格式,分为xml与json,通过zabbix管理界面 ...

  9. 论文笔记——A Deep Neural Network Compression Pipeline: Pruning, Quantization, Huffman Encoding

    论文<A Deep Neural Network Compression Pipeline: Pruning, Quantization, Huffman Encoding> Prunin ...

  10. sqoop数据导入到Hdfs 或者hive

    用java代码调用shell脚本执行sqoop将hive表中数据导出到mysql http://www.cnblogs.com/xuyou551/p/7999773.html 用sqoop将mysql ...