V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
enenaaa
V2EX  ›  分享创造

尝试让程序看懂小说,并能按内容检索。

  •  1
     
  •   enenaaa · 2017-04-24 10:13:05 +08:00 · 5687 次点击
    这是一个创建于 2775 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目标是挖掘小说里的各种角色、剧情关系,在此基础上提供内容搜索,以及小说评点服务。 不过这些还太远了,目前只简单提取了人物关系链。

    https://www.boyunso.com/book/61872

    这个是选了较好的结果,大部分情况下错漏还有点明显。

    42 条回复    2017-04-25 15:28:39 +08:00
    yongzhong
        1
    yongzhong  
       2017-04-24 10:43:45 +08:00
    通过词频来判断是否是人名吗?关系是通过介词?
    jyf
        2
    jyf  
       2017-04-24 10:48:59 +08:00
    不知道这个提取规则是什么 如何人肉去校验?
    hydyy
        3
    hydyy  
       2017-04-24 10:52:46 +08:00
    不错不错
    enenaaa
        4
    enenaaa  
    OP
       2017-04-24 11:18:29 +08:00   ❤️ 1
    @yongzhong
    @jyf
    人名判断用两种方式:
    1 、在分词时通过姓氏分出人名。
    2 、在语义分析阶段,通过特定句式判定。例如:张三说道:。。。, 就判断“张三”可能是人名,这种方式能找出非规则的人名,比如择天记里的天海姓氏。
    在前面的基础上,再通过词频和特定词筛掉候选人名。

    关系提取是一个是通过完整的关系句式判定,例如:张三作为李四的父亲。还有一个是通过上下文做推测, 目前准确率还不高。

    校验方式上,我还没做太多工作,主要靠人肉抽检样本。
    isvara
        5
    isvara  
       2017-04-24 11:58:56 +08:00
    用的什么处理的?
    lrxiao
        6
    lrxiao  
       2017-04-24 12:08:43 +08:00
    有意思
    jyf
        7
    jyf  
       2017-04-24 12:32:59 +08:00
    我主要是指第二种分析 因为句式很多 也未必是 xxx 说道这种 而你也不可能全列出来 所以我很感兴趣怎么自动弄出这种句式 另外有的说到 未必是有关系 大概你现在的人与人的关系就是 A 提到过 B 这样吧?
    Jackeriss
        8
    Jackeriss  
       2017-04-24 12:59:36 +08:00   ❤️ 1
    怎么解决一个人物有多个名字的问题呢?比如伏地魔又叫神秘人,其实原名是汤姆·里德尔。这种情况,这个人物关系图会把他们当成不同的人吧?
    hotStrip
        9
    hotStrip  
       2017-04-24 13:14:36 +08:00
    我觉得以后程序批量输出小说的话,马上就可以输出天蚕土豆和唐家三少这类小说。
    no13bus
        10
    no13bus  
       2017-04-24 13:14:50 +08:00
    这个用的是啥 js 库呢
    enenaaa
        11
    enenaaa  
    OP
       2017-04-24 13:27:33 +08:00
    @jyf
    @isvara

    基于上下文的关系推断,我做得不够深入,思路大体是:
    1 、在段内推断主语,宾语。例如:宁江提着宝剑,跑了过来,笑道: xxx 。 这 3 个分句的主语是同一个。
    2 、通过关系代词筛选段落。例如:宁小梦挽着哥哥的手臂。这个句子存在推断关系的可能。
    3 、在 1 和 2 的基础上,检索附近文本中的主语、宾语和特定语义, 判断出是否存在关系。

    可以看到,这个方法有准确性的问题。

    另外, 分析的前一步, 是分词和语义格式化。
    我首先创建词汇表、句法表、语义表,将句子格式化为已知语义的句法结构。 例如:你好 -> 招呼语义。 妹妹打我->主语是妹妹,谓语是打,宾语是我的指向动作语义。

    这个方式当然不能识别所有的句子, 对于一般的小说文本,目前识别率在 5%~10%之间。
    enenaaa
        12
    enenaaa  
    OP
       2017-04-24 13:32:06 +08:00
    @Jackeriss 是有这个问题, 我也没想到好的办法。也许关系链准确后, 可以通过人物关系消除。
    enenaaa
        13
    enenaaa  
    OP
       2017-04-24 13:32:47 +08:00
    @no13bus 百度的 echarts
    imn1
        14
    imn1  
       2017-04-24 15:08:26 +08:00   ❤️ 2
    无论准确率如何,我都觉得这个项目很有意思
    无论这个项目多有意思,我还是持怀疑态度看待

    其实,
    人与人之间的关系是相当复杂的,很多不能用语言文字描述
    但是,当人们以语言文字介绍一些关系时,却是用简化的方式介绍,实际分类很少,看看自己的 SNS 分组就知道,不至于有几百个组别吧?
    你可以从这个思路着眼,不要只想着“提取”,也可以用“排除”,从粗分类排除,再按细分类排除,加强准确率
    需要很多逻辑判断,几乎是一个语义分析的 AI bot 了,语义——逻辑库应该是重点

    例如:
    男性-->亲戚-->母亲家族-->长辈-->母亲的平辈-->舅舅
    男性-->工作-->长辈-->经理-->上司

    另外
    1.还要用多因素分析,如上面引入其他人(母亲)的关系辅助
    2.多重关系,如家族生意,既是亲戚,也是工作关系等等
    3.关系是双向的,例如逻辑出现“舅舅”,当然要同时得到“外甥”,不能单向推导

    总的来说,相当难,不过这第一个吃螃蟹,我是持支持态度,希望能持久做下去
    lcatt
        15
    lcatt  
       2017-04-24 15:21:08 +08:00
    目前检索速度很快,是只读取了一部分文字么?
    graetdk
        16
    graetdk  
       2017-04-24 15:30:53 +08:00
    赞啊,我对这个也很感兴趣,可以加我微信: Z3JlYXRkaw== (Base64 编码)
    enenaaa
        17
    enenaaa  
    OP
       2017-04-24 15:40:41 +08:00
    @lcatt 不是文本检索,而是通过关键字检索。 分析时生成人名、归类新词,输出关键字列表。在我机器上, 分析一本 2.5m 的小说大约需要 10 秒, 比较慢。
    lcatt
        18
    lcatt  
       2017-04-24 15:58:28 +08:00
    @enenaaa 我试了下,发现: 1.有些重要的角色没检索出, 2.出现了一些莫名的角色和关联,比如“马背上”。。。,以及很多只出现了几章的配角,所以才问是不是只读取了一部分内容而不是基于全本小说的。
    enenaaa
        19
    enenaaa  
    OP
       2017-04-24 16:06:04 +08:00
    @lcatt 嗯, 是只分析了前 250 章的内容。
    人名消歧也还存在问题,上一个版本纯粹的归类算法更严重, 这个版本好了不少 。还在改进中。
    jyf
        20
    jyf  
       2017-04-24 17:48:42 +08:00   ❤️ 1
    @enenaaa 这个关系推断我建议你多找网友训练 最后让他自己学习到这些
    solobat
        21
    solobat  
       2017-04-24 17:55:00 +08:00
    收藏了,希望越来越好
    enenaaa
        22
    enenaaa  
    OP
       2017-04-24 17:57:16 +08:00
    @jyf 你是说用 RNN , LSTM 之类的深度学习算法来建立特征吗, 我感觉这种方式工作量太大了,短期内很难有什么结果。
    xiubin
        23
    xiubin  
       2017-04-24 18:04:25 +08:00
    择天记 中 苟寒食和荀梅 是怎么发生关系的?
    https://www.boyunso.com/book/103392
    zzk819166453
        24
    zzk819166453  
       2017-04-24 18:36:26 +08:00 via Android
    很有意思😁
    jyf
        25
    jyf  
       2017-04-24 19:49:35 +08:00   ❤️ 1
    @enenaaa 那倒用不着神经网络 纯粹是贝叶斯那一套就行了 如果你只关心词性在句子中的排列问题 这个量并不大 也不复杂
    hzwei
        26
    hzwei  
       2017-04-24 23:19:33 +08:00
    哈哈哈,很有意思
    artandlol
        27
    artandlol  
       2017-04-25 01:59:33 +08:00 via Android
    这个不错
    红楼梦 百年孤独 家春秋 。。。
    WildCat
        28
    WildCat  
       2017-04-25 04:23:38 +08:00
    不错,赞一个!
    yuluofanchen
        29
    yuluofanchen  
       2017-04-25 08:41:10 +08:00 via iPhone
    记得有类似的,是读的三国。然后做成网站了。
    hythyt9898
        30
    hythyt9898  
       2017-04-25 09:05:34 +08:00
    试了下《大主宰》《天神诀》,貌似女主都识别不出来
    ahkxhyl
        31
    ahkxhyl  
       2017-04-25 09:38:01 +08:00
    https://www.boyunso.com/book/27817 貌似不太准吧? 关键词 大主宰
    ahkxhyl
        32
    ahkxhyl  
       2017-04-25 09:40:21 +08:00
    Rice
        33
    Rice  
       2017-04-25 09:42:11 +08:00
    有些意思,但是不准
    Troevil
        34
    Troevil  
       2017-04-25 09:45:29 +08:00
    想想那些反转剧,角色身份变换的.... 醉了
    enenaaa
        35
    enenaaa  
    OP
       2017-04-25 09:58:35 +08:00
    @xiubin 亲昵关系是用肢体接触动作判定的, 所以。。
    RUstKkin
        36
    RUstKkin  
       2017-04-25 10:05:25 +08:00
    wordvector 有用吗
    RUstKkin
        37
    RUstKkin  
       2017-04-25 10:06:12 +08:00
    避孕套头像。。。
    demo
        38
    demo  
       2017-04-25 10:17:29 +08:00
    看了一下,是只取了前面部分章节。
    enenaaa
        39
    enenaaa  
    OP
       2017-04-25 11:06:03 +08:00
    @RUstKkin 没有, 完全没有使用神经网络。 我希望分析是建立在稳定可信的基础上, 所以放弃了词向量。好在我也不是想要个通用的程序。
    ifaii
        40
    ifaii  
       2017-04-25 12:14:23 +08:00 via iPhone
    这个有意思
    SingeeKing
        41
    SingeeKing  
       2017-04-25 12:32:59 +08:00
    校花的贴身高手

    vh2h
        42
    vh2h  
       2017-04-25 15:28:39 +08:00
    准不准是另外一个事儿~

    歪个楼~

    推荐下你喜欢的网络小说。谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1132 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:13 · PVG 03:13 · LAX 11:13 · JFK 14:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.