中文伪原创工具需要考虑的问题

我开始思考,目前已有的中文伪原创工具,效果差在哪些地方呢?我想到以下几个:

一、分词问题。

中文和英文不同,无论是搜索引擎的蜘蛛,还是其他自然语言处理的语料分析,都是需要分词的。如果不先进行分词的预处理就开始“伪原创”,肯定是不靠谱。举个例子:“天真”和“纯洁”是近义词。在不分词的情况下,“我有一个天真的表妹”仍然可以伪原创为“我有个纯洁的妹妹”,但“今天真热”处理为“今纯洁热”就是严重不靠谱。

二、顺序执行引发的单一化。

无论是网上流行的中文伪原创词库,还是现成的中文伪原创工具,我都试过了,他们的词库格式如下:

普通的算法是按照顺序依次替换,那么,如图所示,“凡间”的同义词原本有“尘寰”“尘间”“尘世”三个,但它永远不会被替换成后两个词。

最最理想的状态是能够根据语境,替换为合适的词。例如“天真”的同义词有“无邪 ”“纯真 ”“纯洁 ”“纯朴”等等,并非每个词在所有语境下都能够完全替换。当然,结合语境是高级自然语言处理的范畴,简单得伪原创能达到次理想状态就算OK:遇到多个同义词的情况,随机替换其中的一个。

三、词库打架的问题

我下载了网上流传的大部分词库,收费的、免费的,都尝试了。发现没有人去解决词库打架问题。

什么叫做“词库打架问题”?很简单,看这两组词。

顺序执行替换后,会发现文字兜了一个圈回到了原点……这显然不是我们想要的,但,这个问题在现有的词库、伪原创工具中,非常非常普遍。

四、可读性太差

为什么会可读性太差?因为现有的中文伪原创工具,都是通篇全部替换。如果词库里有10万组同义词,程序会遍历一次,把原文中所有能够替换的字符串“榨干”。这样一来虽然伪原创成功了,但可读性无限趋近于零。让我们看这样一组例子:

伪原创后:

如果读者直接阅读伪原创后的文字,能够理解吗?

怎样解决这个问题呢,我想,可以设置一个百分比,或叫做伪原创等级。例如“轻微    柔和    适中    猛烈    变态    面目全非    魂飞魄散”七个等级。用户选择“轻柔”时,只替换100个可替换同义词中的随机10个, 选择“适中”中,替换100个可替换同义词中的随机50个,以此类推。这样就可以让用户自己在“可读性”“原创度”之前自由权衡。

我心中的完美中文伪原创工具

功能模块

功能说明

技术实现

智能分词

避免“今天真热”变成“今纯洁热”的问题。

可以调用现有的中文分词开源组件。

随机性

既便是同一篇文章,每次进行伪原创的结果都不一样。

引入随机取词条。

伪原创力度调节

定义伪原创的百分比,让用户在“可读性”和“原创度”之间自由权衡。

引入等级设置、随机取词条。

词库不要打架

避免或降低“发誓”被替换为“立誓”后又被替换回“发誓”的情况发生。

放弃顺序执行。

统计

统计伪原创后替换了多少词

替换时插入标记

标记

标记被替换的词,方便查看、校对

替换时插入标记

核心程序实现

考虑以上提到的很多方面的问题,程序还是比较长,接近一万行。下面我只列几段核心的代码供大家参考、讨论。

一、分词。

分词其实很容易,因为有很懂开源组件可以使用。我最喜欢的是SCWS。官网地址是http://www.ftphp.com/scws/

SCWS本来是PHP中文分词解决方案,但它提供了API,我们C#程序猿也可以毫无压力的调用。

View Code

二、解决词库打架问题。

这没什么好说的。程序也只有一句话。

三、根据百分比,随机取x条记录。

取随机记录,最方便的是Mysql数据库,内置的rand()函数可以在select中使用。如果使用SQL Server稍微麻烦些,效率也会低一些。

四、替换同义词主函数。

请看代码里的注释。

public string ReplaceArticle(string old, int strength, bool markRed, ref int replacedcount)

{

string newArticle = old ;

int wordsAmount = 180482;//词库总量

int kwcount = Convert.ToInt32(strength * 1.0 / 100 * wordsAmount);  //根据传入的百分比,计算需要取多少个词        var dataset = SQLHelper.ExecuteDataset(SQLHelper.connectionString, System.Data.CommandType.Text, "select * from words order by rand() limit" + kwcount);//随机取kwcount组词

foreach (DataRow r in dataset.Tables[0].Rows)

{

//随机。对于词典中A->B的词组。随机决定本次替换是Replace(A,B)还是Replace(B,A)            int i = new Random().Next(0, 1);

newArticle = newArticle.Replace(r[i].ToString()

, string.Format("{0}", r[1 - i].ToString()));

}

//数被替换的词。        replacedcount = newArticle.Split(new string[] { "" }, StringSplitOptions.None).Length - 1;

if (!markRed)

{

//如果用户不要求标记,则去掉标记。            newArticle = newArticle.Replace("", string.Empty).Replace("", string.Empty);

}

return newArticle;

}

最终程序界面

最后

如前文所说,中文伪原创几乎是一片空白。希望本文能够启到抛砖引玉的作用,更希望有兴趣的同学能够与我一起继续不断的完善、改进它。

本文转自 流牛木马 博客园博客,原文链接:http://www.cnblogs.com/azure/archive/2012/08/29/bolewei.html,如需转载请自行联系原作者

python伪原创工具开发_在线伪原创工具www.bolewei.com的开发过程相关推荐

  1. 基于Python的Flask框架开发的在线电影网站系统(附源码)

    来源丨网络 今天给大家分享的是基于Python的Flask框架开发的在线电影网站系统. 项目介绍 项目介绍:网站前端采用HTML5编写,使用Bootstrap前端开发框架,后端使用Python3语言编 ...

  2. python伪原创工具开发_现在有哪些好用的伪原创工具?

    有些自媒体人或者博主可能经常苦于写不出原创稿子而大把的掉头发吧(程序员也掉!),最近是不是毕业崽们被论文折磨的痛不欲生?说白了就是为了原创,就是为了降重,那么今天这篇你不能错过!好几个软件(网站),贝 ...

  3. python自动化工具开发_初识TPOT:一个基于Python的自动化机器学习开发工具

    1. TPOT介绍 一般来讲,创建一个机器学习模型需要经历以下几步: 数据预处理 特征工程 模型选择 超参数调整 模型保存 本文介绍一个基于遗传算法的快速模型选择及调参的方法,TPOT:一种基于Pyt ...

  4. 伪元素写竖线_用伪元素画出太极图

    本博客介绍了如下内容: 1.伪元素的特征: 2.如果不通过伪元素,普通小白画八卦图方法: 3.如何通过伪元素装逼方法来画八卦图方法: 4.介绍了渐变色的生成工具和动画生成工具: 5.伪元素的注意问题. ...

  5. python 的库如何开发_一篇文章入门Python生态系统

    译者按:原文写于2011年末,虽然文中关于Python 3的一些说法可以说已经不成立了,但是作为一篇面向从其他语言转型到Python的程序员来说,本文对Python的生态系统还是做了较为全面的介绍.文 ...

  6. 在线花店系统需求分析_在线富集分析工具,5秒打包您所有的富集分析需求

    ?点击上方蓝字把我们设为星标吧✴ 老师们筛选到自己感兴趣的基因之后是否会有如下需求和疑问: 1.这些基因主要的生物功能是什么? 2.这些基因主要涉及什么信号通路? 3.怎么绘制精美的富集统计图? 4. ...

  7. python简历怎么写开发_了解如何为Python开发人员制作简历

    成为一种经过认证的专业Python编程语言在过去的二十年里取得了很大的进步.随着它在数据科学.人工智能和机器学习领域的巨大贡献,它已经成为21世纪最流行的语言之一.不断增长的创新和技术进步为任何pyt ...

  8. wxFormBuilder + wxPython 工具开发第四章-日记本工具文章内容增改删以及打包

    目录 前言 一.文章新增 二.文章删除 三.文章修改 四.Ctrl+S快捷键的响应 五.增加提示 六.打包exe 前言 上一章讲述对日记本树目录的节点实现增.改.删的功能步骤 链接:wxFormBui ...

  9. live http工具下载_使用通用测试工具探索Blueworks Live REST API资源

    live http工具下载 本系列的第1部分介绍了5个一般用例,它们是使用IBM®Blueworks Live的代表性状态转移(REST)应用程序编程接口(API)的最佳方法. 您还为每种用例学习了不 ...

最新文章

  1. asp.net 网页做一个浮动层_你们要的HTML、CSS布局技巧:如何规范搭建网页架构?
  2. 在Win 8.1上安装配置FlashDevelop5.0.0
  3. docker 漏洞测试 靶机环境 靶机平台 vulhub vulapps 简介
  4. Netlib文件转化为mps文件
  5. C++继承中父类和子类之间的赋值兼容
  6. linux 端口 镜像吗,Linux如何实现镜像端口
  7. 数据可视化及数据保存
  8. outlook qr码在哪里_优势对比:阜阳洋葱店邀请码
  9. Hive from_unixtime函数入门
  10. 【论文解读】知识图谱最新研究综述
  11. 从闪迪的一个U盘看整个行业
  12. Peephole LSTM、GRU 实战
  13. ai的预览模式切换_ai模式切换快捷键是什么啊?ai模式切换方法
  14. 微信小程序超链接跳转页面
  15. rundll32.exe传入参数
  16. python中ttk_ttk/Python中的按钮图像问题
  17. 简单教你提高网站速度的6种小方法
  18. 基于微信小程序的wifi模块使用
  19. 你了解眼角膜移植术吗?哪些眼疾需要接受角膜移植呢?
  20. 做跨境人人都是天秤座,三个月都没能建起一个店铺

热门文章

  1. 《鹰眼》(Eagle Eye):对电子媒介的反恐
  2. ubuntu 18.04 安装caffe
  3. Asio Streams, Short Reads and Short Writes
  4. 微信小程序中动态添加删除class类名 使用三元表达式动态设置标签的class名
  5. 图像和base64的转换 uniapp开发
  6. 怎样将wmv格式的视频转换成mp4格式
  7. ps 制作虚线框背景
  8. React中文文档之Composition vs Inheritance
  9. 如何更新服务器系统教程,服务器操作系统如何更新
  10. 【苹果相册推送位置推送iMessage】软件安装TestFlight计划的信息