美文网首页Python中文社区自然语言处理(NLP)有趣的代码
回文句式初探:“上海自来水来自海上”

回文句式初探:“上海自来水来自海上”

作者: 传习者戚 | 来源:发表于2017-09-07 12:41 被阅读28次
    
        任何个体都有自己的品牌;存在即有价值。
                                  —— 传承者戚
    
    

    本实例利用python实现类似于“上海自来水来自海上”的中文句子造句。实现效果如下:

    长短计算尺算计短长
    除根落水狗水落根除
    黄金润滑油滑润金黄
    马上话搭头搭话上马
    馋嘴说瞎话瞎说嘴馋
    风扇打拍子拍打扇风
    顺耳话搭头搭话耳顺
    面对计算机算计对面
    集市落花生花落市集
    难为继承人承继为难
    世故知情人情知故世
    ……
    

    python3.5 代码如下:

        import 汉语词林
        import jieba
        import jieba.posseg  # 结巴词性标注模块
    
        # 程序编者:传习者戚
        # 造句:类似于“上海自来水来自海上”的句子
        # 统计运行时间计时开始
        import datetime
        begin = datetime.datetime.now()
    
        def 单字词性(one_char):
            return [i.flag for i in jieba.posseg.cut(one_char)][0]
    
        def 词组词性排列(strings):
            s = list(strings)
            return list(map(单字词性, s))
      
        # 搜索双字词语AB:倒叙过来也是常用词语BA。    
        double_char = 汉语词林.双字列表
        double_char = [doub for doub in double_char if "v" not in 词组词性排列(doub)]  # 没有动词
        double_char = [doub for doub in double_char if doub[0] != doub[1]]  # 双字不重复
        double_char = [doub for doub in double_char if doub[::-1] in 汉语词林.双字列表]   # AB倒序BA也是词组
        print(len(double_char), double_char)
       
        # 搜索三字词语XYZ:前两个字倒序也是词语YX。    
        tri_char = 汉语词林.三字列表
        tri_char = [tri for tri in tri_char if "v" in 词组词性排列(tri[:2])]  # 前两个词倒序 YX 中有动词
        tri_char = [tri for tri in tri_char if tri[0] != tri[1]]  # 前两字不重复
        tri_char = [tri for tri in tri_char if tri[1] != tri[2]]  # 后两字不重复
        tri_char = [tri for tri in tri_char if tri[::-1][1:] in 汉语词林.双字列表]  # 前俩字倒序YX也是词组
        print(len(tri_char), tri_char)
      
        # 组合成句子:A B X Y Z Y X B A
        for d in double_char:
            for t in tri_char:
                s = d + t   # A B X Y Z
                t = s[::-1][1:]  # Y Z B A
                print(s+t)  # A B X Y Z  +  Y X B A
    
        # 统计运行时间计时结束
        end = datetime.datetime.now()
        print("\n运行时间:%s(%d秒)" % (end-begin,(end-begin).seconds))
    
    

    上述程序还需要改进:双字词组AB和三字词组XYZ的语义关联。

    相关文章

      网友评论

        本文标题:回文句式初探:“上海自来水来自海上”

        本文链接:https://www.haomeiwen.com/subject/uskbjxtx.html