分享到           

本帖最后由 羽·凌风 于 2021-12-4 14:56 编辑
事情是这样的,我上周突然犯瘾想找点比普通的word文档更专业的写文工具来用用,但大多数工具都只有手机版,并且实时同步也不如我正在用的在线文档。最后写文工具没找到,我倒是发现了一款叫做“云上写作”的APP,除了基础的写文功能之外,那个APP还自带分析文章中人物登场次数、人物关系统计、常用词统计、人物关系图之类有趣的功能。

QQ图片20210913093359.png
2021-9-13 09:34 ↑

详见云上写作APP的宣传页面:http://www.yunshangxiezuo.com/web/ 看起来很有趣是吧

于是我下载了这个APP打算尝试,稍加尝试发现免费版的限制那是相当得多啊,只能建100个关键词、所有的统计页面都只能显示关键词的第一个字,并且只有手机版才有统计分析页面,不能在电脑上查阅!这样玩起来一点也不尽兴啊!因此我继续寻找具有类似功能的软件,别的软件没找到,却找到了许多可以实现类似功能的代码教程!原来这个功能是可以通过Python语言实现的,并且网上也有很多相关教程。

可是这些教程基本上都是面向程序猿的,如果没有编程基础去看那些教程很容易走弯路也很容易从入门到放弃(X)。因此,我决定来写一个面向创作者的零基础教程,手把手教你从零开始,直到为自己的小说搭建起一套自动化导出常用词云图、关键词统计和人物关系图的算法!那么还等什么?开始动手吧!希望每一个作者看完后都能学会哦

顺道一提因为我自己用的系统是Windows,所以这个教程的搭建环境部分只有Windows的内容,但语法部分应该是通用的。

1. 文本分析原理


2. Python基础知识


3. 编程环境搭建


4. Python常用代码


5. 函数与Python库的调用


6. 开始编写你的文本分析代码


7. 文本的处理


8. 人物关系图的更多处理方式


至此,我们的手把手教程就完全结束了。从此再也不需要依附于APP,你可以完全自定义输出想要的图表,完全自定义添加想要分析的关键词!
你,学废了吗?

 

欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

首先,辛苦了,不难想象要静下心来码出这么长的文字,还得调整版式,需要花费多少心血。
其次,这个教程实际上有一半的篇幅是介绍一门编程语言,有点像是,“你有一只兔子我有一只兔子我们把兔子放在一起就是两只兔子也就是1+1=2你已经学会基本的运算法则啦快来试一试吧(微积分)”,这种感觉。其实不用说没学过编程的人看不懂,我本身只是没接触过Python也很难看得懂(C#是最好的语言.png)。
然后,我大概看过来,好像实现的方式是类似于词频统计,扫描整个文本内容,统计各个关键词出现的次数,按照自定义的规则合并同义词的频数。我粗略想了一下如果是这样的话,正则表达式会不会更好用一些,你知道的它就是为了模式匹配而生的。我可能会用C#尝试一下。
最后,冒昧提一点建议,实际上程序员各有各的编码风格,非程序员根本没有兴趣看代码。可以考虑侧重去讲算法,因为算法和语言无关。这个东西是怎么实现的、检测到这个词后哪个数值+1、什么情况算有关系什么情况算没关系……诸如此类。而具体应用则可以考虑自己编写一个完整的应用程序直接放上去给大家下载使用。(然后现在这个功能它真的上线了)
愿飞龙常入你的梦乡。

TOP


本帖最后由 羽·凌风 于 2021-12-4 13:31 编辑
回复 2#  @天意618A03

哦对,你这么一说我才注意到,我忘记讲解分词系统了,我就说怎么中间写得那么快(炸)
让我来把jieba的介绍补上~
我自己平时是喜欢直接上手的类型,理论都是连着实操一起学的,所以太容易忘记单独介绍理论了(哎)WWWWWW

对,核心就是用jieba扫描整个文本内容,然后统计出关键词,但是jieba和匹配全文有一点不一样的是,jieba会先把文本切割成独立的词组,后续处理都是建立在这些词组上的,而不需要再处理整个文本
如果用匹配的话,不同的关键词应该都需要重新匹配全文?这样感觉没有直接处理单独的词组直观和自由,而且要匹配出一般常用语的话,那个关键词匹配次数可能就会非常大了
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP


常用的情景下(自己写文),十几个KB或者十几个MB的文本对于CPU来说都没差。切分词组是个挺有趣的想法,但其实筛选关键词的时候还是要一个个词组看过去,本质上也没有什么区别。如果用正则表达式的话,核心就成了如何用一大堆候选词生成一个合适的表达式,然后只要拿表达式去匹配全文就可以了。
换个实际的例子,无论是word、edge、vscode或者什么别的阅读器/编辑器,查找这个功能几乎都是实时完成的,无论它出现了多少次,在什么位置。
当然这些只是说正则也可以做到一样的事情。既然现在它已经实现了,就没必要再折腾它了(


【发帖际遇】天意618A03 在龙峰山脉遇上了谜样的大姊,被请了一杯酒,喝下感到神清气爽,获得&sid=byZvWl 48探险经验 !

际遇事件仅作娱乐,正式设定请见【DL故事集】
愿飞龙常入你的梦乡。

TOP


本帖最后由 羽·凌风 于 2021-12-4 20:41 编辑
回复 4#  @天意618A03

原来如此,每次查找匹配并不耗资源的话,那匹配确实也是一个不错的思路
我之前尝试优化的时候,也发现分词算法本身速度挺快,拖慢速度的主要是对词典的预处理和一个个词组的遍历
还有这里用的词云图库wordcloud和关系图库networkx也很慢,我线上版换成pyecharts,感觉快多了,也好看多了WWWWW
所以确实本质上没什么区别~ 或者说最主要的区别在于分词算法库是现成的(炸)WWWWW
没必要再折腾它WWWWWWWWW
欢迎来到Dragicland,【总版规】请记得要看哦,还有这个也是好东西→如何回复?

TOP

分享到