查看: 174|回复: 4

用modelscope分析了百万字的《天龙八部》,原来金庸大师 ...

[复制链接]

1

主题

4

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2022-12-8 03:37:19 | 显示全部楼层 |阅读模式


近期在读金庸先生的天龙八部,心念念在金庸先生作品中,偏爱哪位人物,喜欢哪个武功招式,偏向哪个武侠组织。正临云栖大会modelscope 魔搭社区发布,了解modelscope里上线了40多个信息抽取的模型,不仅仅包括新闻、简历、微博、医疗、金融等行业,还覆盖中、英、饿、西、法等语种模型,甚至包括不同规格(base、large、lstm)模型。经过一番尝试,发现小说这个行业模型比较适合,拿来把玩一下,全部的实体抽取模型可以通过这个链接访问 https://modelscope.cn/models?page=1&tasks=named-entity-recognition



从网上下载了天龙八部新修版,一共百万余字,按行分别使用modelscope进行文本解析。按照 武侠人物、组织、招式、地点、头衔、武器分别进行分析,发现有些有趣的现象。



武侠人物云图





本来,我以为最top的是乔峰,但没想到金老爷子偏爱的是段誉。而且,屡战屡败的鸠摩智竟然名列前茅。



招式云图





《天龙八部》招式出现次数最多的是凌波微步。。打不过可以跑呀。
此外,还看到了降龙二十八掌,一开始以为是文本错误,经过一番查询,才知道是金老爷子在新版本把十八掌改成了二十八掌,与之同时,结局也改了下,段誉与王语嫣最终没能携手。。。。给众多读者留下了不少遗憾。

武侠组织图





丐帮,果然还是第一大帮,而且关于丐帮的故事在整个小说里也占据很大比重。

头衔云图





头衔其实就是外号或者昵称,出乎意料的是南海鳄神是出现最多的。不过看过天龙八部的都知道,南海鳄神十分在乎别人对自己的称呼,逢人必自报家门,且非常抗拒岳老三这个称呼,每次都要纠正自己是南海鳄神岳老二。



武器云图





六脉神剑,段家绝学,运转六脉剑气。段誉在少林寺、曼陀山庄,两度凭借此神功打败慕容复,为慕容博称赞为“天下第一剑”。



地点云图





天龙八部小说合计五册,基本每册都会有一个新的舞台。从这些热门地点我们基本就能还原出天龙八部的故事梗概:

第一章:段誉在无量山-大理国-天龙寺的神奇经历
第二章:段誉乔峰在姑苏结为兄弟,乔峰被指契丹人逐出丐帮
第三章:虚竹巧破珍珑棋局,成为缥缈峰灵鹫宫主人
第四章:少林寺大战,三兄弟聚义
第五章:收尾,西夏招婿,段誉继位,雁门关大战,萧峰自戕

附加代码

我们可以选择通过modelscope的notebook或本地安装,如是在本地安装,先通过一行命令下载安装modelscope
pip install "modelscope[nlp]" -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html先通过以下命令下载模型,试用模型的pipeline能力
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks

ner_pipeline = pipeline('named-entity-recognition', 'damo/nlp_raner_named-entity-recognition_chinese-base-book')
ner_pipeline('风族最强大的存在,风帝,为当世顶尖强者之一。')调用上面的代码后,输出如下:
[
  {
    "end": 2,
    "span": "风族",
    "start": 0,
    "type": "ORG"
  },
  {
    "end": 11,
    "span": "风帝",
    "start": 9,
    "type": "TIT"
  }
]
再通过以下代码开始处理《天龙八部》,可以从网上找了个txt,保存"天龙八部.txt", 接下来通过以下代码将不同类型对应的实体保存到词典里
import codecs

per_map = {}
org_map = {}
loc_map = {}
kun_map = {}
tit_map = {}
wea_map = {}

def find_typemap(v):
    if v['type'] == 'PER':
        return per_map
    if v['type'] == 'ORG':
        return org_map
    if v['type'] == 'LOC':
        return loc_map
    if v['type'] == 'KUN':
        return kun_map
    if v['type'] == 'TIT':
        return tit_map
    if v['type'] == 'WEA':
        return wea_map
   
def proc(js):
    for v in js['output']:
        entity = v['span']
        m = find_typemap(v)
        if entity in m:
            m[entity] += 1
        else:
            m[entity] = 1

lines = codecs.open('天龙八部.txt', encoding='gb18030', errors='replace').readlines()

for line in lines:
    result = ner_pipeline(line)
    proc(result)打印下六组类型对应的实体词,获得词云数据,通过微词云平台获取词云图片。
回复

使用道具 举报

3

主题

7

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2022-12-8 03:37:47 | 显示全部楼层
六脉神剑 实体类型识别错了,应该跟凌波微步一类[飙泪笑]
回复

使用道具 举报

3

主题

8

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2022-12-8 03:38:03 | 显示全部楼层
[爱]感谢反馈,这个 六脉神剑 有点难度,模型还需要不断努力[看看你]
回复

使用道具 举报

0

主题

6

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-12-8 03:38:45 | 显示全部楼层
哈哈有米有电商ner的开源呀[可怜]
回复

使用道具 举报

1

主题

4

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2022-12-8 03:39:13 | 显示全部楼层
有的有的,modelscope平台有电商NER,可以看下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表