业界动态
文本关键词提取工具_文本分析与可视化
2024-11-01 00:13
d7066aa4b2518425c8e96a79a2fd6411.png fdd0d9ea62874b05974f99a513e40ec6.png

在这篇文章中,我想描述一种文本分析和可视化技术,它使用一种基本的关键字提取机制,只使用单词计数器从我在http://ericbrown.com [1]博客上创建的文章语料库中查找前3个关键词。为了创建这个语料库,我下载了我所有的博客文章(大约1400篇),并抓取了每篇文章的文本。然后,我使用 nltk 和各种 词干提取/词形还原 技术对文章进行令牌化(也可翻译为:标记解析),计算关键词并选取前3个关键词。然后我将所有文章中的关键词聚合起来,使用Gephi[2]工具来创建一个可视化图像。

文本关键词提取工具_文本分析与可视化

我已经上传了一个带有完整代码集的jupyter笔记本[3],供你重现此工作。你还可以从这里[4]的csv文件中获得我的博客文章的副本。你需要安装 beautifulsoup 和 nltk。你可以使用以下代码安装他们:

425f58348d6f83ca55f4b9574d6a88af.png

首先,我们加载我们的库:

2d2bf9c806e589ca73bd5699368d8be5.png

我在这里加载时出现警告,是因为有一个关于 BeautifulSoup 的警告,我们可以忽略它。

现在,让我们来设置一些工作所需要的东西。

首先,我们来设置停止词、词干提取器和词形还原器。

91178ab1a247d56872d7f6fbf6585a85.png

现在,我们来建立一些我们需要的函数。

tokenizer 函数是从这里[5]引用的。如果你想看一些很酷的主题建模,那就跳过并阅读如何在Python中挖掘新闻反馈数据和提取交互式见解……[6]这是一篇非常好的关于主题建模和集群的文章,我在本文及以后的文章中也会提到这一点。

1087c5d15624e98f97fde1fcb89dd2b2.png

接下来,我的文章中有一些html标记,所以我想在对它做任何其他事情之前先将它从我的文本中删除……这里有一个使用 bs4 的类可以实现,我在Stackoverflow[7]上找到了这段代码。

79737930b7eeeae0aec3ddda2b188f6e.png

好了,现在来看看有趣的东西。要获得关键词,我们只需要两行代码。这个函数执行计数并为我们返回关键字的数量。

52d5a6137f427b77b42af8ab0a5f3704.png

最后,我创建了一个函数来获取一个包含 url /pubdate/author/text的pandas dataframe(数据结构集),然后从中创建关键词。这个函数遍历一个pandas dataframe(每行是一篇来自我博客的文章),标记“text”来源并返回一个pandas dataframe,其中包含关键词、文章标题和文章的发布数据。

2628ba082dfcdca7407f06519f2fbbd9.png

现在是时候加载数据并开始分析了。这段代码载入我的博客文章(可以在这里[8]找到),然后从数据中只获取感兴趣的列,重命名它们并为标记化做准备。在读入csv文件时,大多数操作都可以使用一行代码完成,但是我已经为另一个项目编写了这些操作,并且它就是这样。

44172db2bb86a90b88e28d8d60549ddf.png

使用dataframe的 tail 方法我们可以得到

0d49221666c615f08219688959366e49.png

现在,我们可以通过调用 build_article_df 函数来标记和单词计数工作了。

badc6df1509da87945b34dbd69ad4a22.png

这将为我们提供一个新的dataframe,其中包含每篇文章的前3个关键词(以及文章的发布日期和标题)。

c1d3526645d6bd9e682b804eb043b312.png

这本身就很酷。我们使用一个简单的计数器为每篇文章自动生成关键词。不是很复杂,但是很好用。还有很多其他的方法,但是现在我们还是用这个。除了拥有关键词之外,看一看这些关键词之间以及它们和其他关键词之间是如何“连接”起来的,可能会很有趣。例如,“data”在其他文章中出现了多少次?

有多种方法可以回答这个问题,但是一种方法是通过可视化以一个 拓扑/网络 映射来查看关键词之间的连接。我们需要对关键词进行“计数”,然后构建一个共生矩阵,我们可以将这个矩阵导入到 Gephi 中来进行可视化。我们可以使用 networkx 库来绘制网络映射,但是需要做很多工作,否则就很难从中得到有用的东西,相比之下,还是使用 Gephi 对用户更友好。

我们有了关键词,需要一个共生矩阵。要做到这一点,我们需要进行一些操作,让我们的关键词分开来。

17333caa11172ec08bc908bc6d1be82b.png

现在我们有了一个关键词dataframe kw_df ,它包含两列:关键词和带有关键词的关键词组

cbb30ad1fa155f5739f81d0d6a3eac04.png

这并没有什么实质意义,但是我们需要两列来构建一个共生矩阵。我们通过迭代每个文档关键词列表( keywords 列)并查看是否包含 关键词 。如果包含,我们就把它加入到共生矩阵中,然后构建出我们的共生矩阵。

962e37fce12bc85ebfecaa3e17aa2447.png

现在,我们在 co_occur dataframe中有一个共生矩阵,可以将其导入到 Gephi 中来查看节点和边缘的映射。将 co_occur dataframe保存为一个CSV文件,以便在 Gephi 中使用(你可以在这里[9]下载该矩阵的副本)。

068eda7bd3c83b05ff5b704cdf10f011.png

First, import your co-occuance matrix csv file using File -> import Spreadsheet and just leave everything at the default. Then, in the ‘overview’ tab, you should see a bunch of nodes and connections like the image below.

走进Gephi

现在,是时候使用Gephi了。对于这个工具,我是新手,所以就不能像教程那样给你提供很多东西,但是我可以告诉你构建网络映射所需要的步骤。首先,使用 File -> import Spreadsheet 导入共生矩阵csv文件,并将所有内容保留为默认值。然后,在“overview”选项卡中,你应该会看到一连串的节点和连接,如下图所示;

15f8561e7833629aa52c813042c13024.png

接着,向下移动到“layout”部分,选择Fruchterman Reingold layout,并按下“run”按钮来重新绘制映射图。在某些情况下,当节点在屏幕上稳定下来后,你需要按下“stop”。你会看到如下所示的内容。

03f571383aaf1a482b3e6eee02e2b690.png

很酷,对吧?现在,让我们给这个图像加入颜色。在“appearance”部分,选择“nodes”,然后选择“ranking”,接着选择“Degree”并点击“apply”。你会看到网络图发生了变化,现在它有了一些与之相关的颜色。如果你愿意,你可以随意改变颜色,但是默认的配色方案应该是这样的:

56112491159f413d50e4d553a977e7a8.png

不过这还不是太有趣。文本/关键词在哪里呢? 你需要切换到“overview”选项卡才能看到。你应该会看到如下所示的内容(在下拉列表中选择“Default Curved”之后)。

9eb6d5b64c1cb3e675029ef519ed3b15.png

这下子就很酷了。你会在这里看到两个非常不同的很有趣的领域。“Data”和“Canon”……这是有道理的,因为我写了很多关于数据的东西,分享了很多我的摄影作品(用Canon相机拍的)。

如果你感兴趣的话,这是我所有1400篇文章的完整映射图。同样,有两个围绕着摄影和数据的主要集群,但还有一个围绕着‘business’, ‘people’ 和 ‘cio’的大型集群,这与我多年来的大部分写作内容相吻合。

还有许多其他方法可以可视化文本分析。我打算再发几篇文章来谈谈我最近使用和遇到的一些更有趣的方法。请继续关注。

如果你想了解更多关于文本分析的知识,请阅读以下书籍:

使用Python进行文本分析:从数据中获得有用结论的实战方法[10]

Python的自然语言处理:使用自然语言工具包分析文本[11]

R语言文本挖掘[12]

相关链接

[1]——http://ericbrown.comhttps://blog.csdn.net/weixin_39775354/article/details/

[2]——https://gephi.org/

[3]——https://github.com/urgedata/pythondata/blob/master/Text%20Analytics/ericbrown.ipynb

[4]——https://github.com/urgedata/pythondata/blob/master/examples/tocsv.csv

[5]——http://ahmedbesbes.com/how-to-mine-newsfeed-data-and-extract-interactive-insights-in-python.html

[6]——http://ahmedbesbes.com/how-to-mine-newsfeed-data-and-extract-interactive-insights-in-python.html

[7]——https://stackoverflow.com/questions/753052/strip-html-from-strings-in-python

[8]——https://github.com/urgedata/pythondata/blob/master/examples/tocsv.csv

[9]——https://github.com/urgedata/pythondata/blob/master/Text%20Analytics/out/ericbrown_co-occurancy_matrix.csv

[10]——http://amzn.to/2wTELtb

[11]——http://amzn.to/2y7B9E6

    以上就是本篇文章【文本关键词提取工具_文本分析与可视化】的全部内容了,欢迎阅览 ! 文章地址:http://lanlanwork.gawce.com/news/9108.html 
     资讯      企业新闻      行情      企业黄页      同类资讯      首页      网站地图      返回首页 阁恬下移动站 http://lanlanwork.gawce.com/mobile/ , 查看更多   
最新新闻
手机最适合在只剩50%的时候充电吗?这样做对电池好吗?手机什么时候充电最好「手机最适合在只剩50%的时候充电吗?这样做对电池好吗?」
首先说我的观点,或者我一直认知下的结论:“没充完就拔下,没用完就充电。”是不会影响电池的寿命和容量。需要说明一下,我是电
本周北京天气:北风“戏份”不断,升温稳占“C位”
今日北京白天晴空相伴,气温回升,但下午会伴随5、6级阵风,提醒大家户外远离高空易坠物,室外物品也请妥善安置。夜间云量增多,
综治“枢纽”发力,巧解民生纠纷结
上午8点30分天津市西青区社会治安综合治理中心刚一开门法律援助律师潘星光就在大厅里开始忙碌的工作引导讨薪的保洁阿姨落座接待
LED和OLED的哪个好?带你了解OLED和LED的区别(2)oled手机「LED和OLED的哪个好?带你了解OLED和LED的区别(2)」
OLED和LED的区别:1.分辨率:就是一Inch多少像素,LCD领先。2.开口率:就是发光面积除整块屏幕面积,之前LCD领先,如今基本是OLE
手机静音闹钟会响吗手机静音闹钟会响吗「手机静音闹钟会响吗」
山和水不是反义词。“山”的意思:1、地面形成的高耸的部分:土山。2、形状像山的:山墙(人字形房屋两侧的墙壁。亦称“房山”)
沙特去年入境旅游支出达到创纪录的410亿美元
财联社4月3日讯(编辑 李林)据沙特中央银行的数据,当地的入境旅游支出在2024年飙升至创纪录的1536.1亿里亚尔(409.5亿美元),
手机NFC为什么不能用了 手机NFC功能不能用了怎么办手机不支持nfc功能怎么办「手机NFC为什么不能用了 手机NFC功能不能用了怎么办」
  手机NFC很方便,然而,有时候您可能会遇到手机NFC无法使用的情况,这是怎么回事呢?  手机NFC为什么不能用了手机NFC功能不
大数据与会计就业目标方向(大数据在会计领域的就业方向)非常手机「大数据与会计就业目标方向(大数据在会计领域的就业方向)」
大数据时代也再次降临,对此各行各业对于,都有吧着巨大无比的影响。而是对会计专业的学生而言,大数据都是一个不可忽略的趋势。
72岁泰王派“新宠”主持仪式,90后女将军身着金衣显贵气,助手跪地服侍
当地时间4月5日下午,恰尤特拉·瓦吉拉帕塔索帕女士(คุณหญิงชยุตรา วชิรพัทธโสภา),作为泰国国王拉
病娇模拟器手机游戏病娇模拟器手机版「病娇模拟器手机游戏」
病娇模拟器手机游戏是一款以痴情女生为主角的乙女向手游,游戏中添加了汉化补丁以提供更好的游戏体验。玩家扮演一位女子高中生,