英文 伪原创 词库(中文伪原创工具需要考虑的问题我开始思考,效果差在哪些地方呢?)

优采云 发布时间: 2021-09-09 22:02

  英文 伪原创 词库(中文伪原创工具需要考虑的问题我开始思考,效果差在哪些地方呢?)

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

  我开始思考,现有的中文伪原创工具有什么缺点?我想到了以下几点:

  一、分词问题。

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

  二、 顺序执行导致的简化。

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

  普通的算法是按顺序替换,那么,如图所示,“凡人”的​​同义词本来就有“陈欢”“陈健”“凡人”三个,但永远不会被替换成“凡人”最后两个字。

  最理想的状态是能够根据上下文替换合适的词。例如,“天真”的近义词包括“无辜”、“无辜”、“纯洁”、“纯洁”等。并非每个词都可以在所有上下文中完全替换。当然,结合上下文是高级自然语言处理的范畴,简单到伪原创可以达到子理想状态就可以了:如果遇到多个同义词,随机替换其中一个。

  三、Thesaurus 打架问题

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

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

  按顺序执行替换后,你会发现文字绕回原点……这显然不是我们想要的,但是这个问题在现有词库和伪原创工具中很常见.

  四、可读性太差

  为什么可读性这么强?因为现有的中文伪原创工具在整篇文章中都被替换掉了。如果同义词库中有100,000组同义词,程序将遍历一次并将原创文本中的所有可替换字符串“挤干”。这样一来,虽然伪原创成功了,可读性却无限接近于零。我们来看这样一组例子:

  伪原创后:

  如果读者直接阅读伪原创之后的文字,能看懂吗?

  怎么解决这个问题,我觉得,可以设置一个百分比,或者伪原创level。比如“微柔、温和、暴力、变态、面目全非、面目全非”七个等级。当用户选择“温和”时,100个可替换同义词中仅随机替换10个,选择“中等”时,100个可替换同义词中随机替换50个,以此类推。这允许用户在“可读性”“原创度”之前自由权衡自己。

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

  功能模块

  功能说明

  技术实现

  智能分词

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

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

  随机性

  即使是同一篇文章文章,每个伪原创的结果都不一样。

  引入随机入口。

  伪原创强度调整

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

  介绍关卡设置并随机挑选条目。

  不要与词库争吵

  避免或减少将“swear”换成“swear”然后又变回“swear”的情况。

  放弃顺序执行。

  统计数据

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

  替换时插入标签

  标签

  标记替换的单词以便于查看和校对

  替换时插入标签

  核心程序实现

  综合以上多方面考虑,程序还是比较长的,接近10000行。下面我只列出几个核心代码供大家参考讨论。

  一、分词。

  分词其实很容易,因为对开源组件有很好的了解可以使用。我最喜欢的是 SCWS。官网地址是

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

  查看代码

  二、 解决词库打架问题。

  没有什么可说的。程序只有一句话。

  三、 根据百分比随机选择 x 条记录。

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

  四、 替换同义词主函数。

  请查看代码中的注释。

  publicstringReplaceArticle(stringold,intstrength,boolmarkRed,refintreplacedcount)

  {

  stringnewArticle=old;

  intwordsAmount=180482;//词库总数

  intkwcount=Convert.ToInt32(strength*1.0/100*wordsAmount);//根据传入的百分比计算需要取多少词 vardataset=SQLHelper.ExecuteDataset(SQLHelper.connectionString,System.Data .CommandType .Text,"select*fromwordsorderbyrand()limit"+kwcount);//随机取kwcount组词

  foreach(DataRowrindataset.Tables[0].Rows)

  {

  //随机。对于字典中的短语 A->B。随机决定这个替换是 Replace(A,B) 还是 Replace(B,A) inti=newRandom().Next(0,1);

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

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

  }

  //要替换的字数。 replacecount=newArticle.Split(newstring[]{""},StringSplitOptions.None).Length-1;

  if(!markRed)

  {

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

  }

  returnnewArticle;

  }

  最终程序界面

  终于

  如上所述,中文伪原创几乎是空白的。希望这篇文章能起到启发作用,也希望有兴趣的同学可以和我一起继续完善和完善。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线