menzi11 / BullshitGenerator

Needs to generate some texts to test if my GUI rendering codes good or not. so I made this.
Other
15.68k stars 2.88k forks source link

避免重复的优化?出现过的句子不再重复。 #115

Open sicheng20 opened 4 years ago

sicheng20 commented 4 years ago

目前的语料还比较少,可能无法支撑6000字不重复。 解决方式一:可以增加语料库,这样能保证在生成不是太多(比如10000字以内)的字数以内,都不会出现重复句子。 二:设置达到字数前不重复,这样能动态保证只要要求的生成字数小于语料库总字数,那么就不会重复!

co-develop-drv commented 4 years ago

可以增加遇到重复句子换个句式表达,就是所谓的洗稿的方法,增加一个替换变量,这个变量树形存储,第一级节点是同一个意思的句子的编号,它的子节点是各种表达,或者干脆嵌套映射也一样

sicheng20 commented 4 years ago

可以增加遇到重复句子换个句式表达,就是所谓的洗稿的方法,增加一个替换变量,这个变量树形存储,第一级节点是同一个意思的句子的编号,它的子节点是各种表达,或者干脆嵌套映射也一样

名人名言也有重复的,这个完全不需要重复。

yodagg commented 4 years ago

重复使用一句话是正常行为,只是目前经常会出现一个段落里面重复两三句话,频次太高太密了。 可以在生成句子后拉到一个名单里,生成的句子检测在名单里就重新生成,(200字/5句话)后再从名单里去除,这样就可以保证同样的句子不会太密。

menzi11 commented 4 years ago

这其实是个比较大的问题, 重复可以通过扩充语料库和换个抛色子的方法解决, 但我现在在想减小句子的粒度, 争取粒度更小.

aetherwu commented 4 years ago

https://github.com/menzi11/BullshitGenerator/pull/107 此 PR 提供了一些格言来部分规避这个问题。

考虑到该程序并不提供特别严肃的运用场合或者场景,简单用 list 来记录和跳过最近使用过的 8-10 种说法是否就足够呢?

sicheng20 commented 4 years ago

重复使用一句话是正常行为,只是目前经常会出现一个段落里面重复两三句话,频次太高太密了。 可以在生成句子后拉到一个名单里,生成的句子检测在名单里就重新生成,(200字/5句话)后再从名单里去除,这样就可以保证同样的句子不会太密。

也分情况吧,我认为名人名言一般情况在同一篇文章中不应该重复。 转换总结类的句子倒是重复比较正常,但是怎么判定、怎么控制重复频率是个问题,简单点就直接不重复,稍微看起来真实点,可以多增加一些转换总结的语句。

sicheng20 commented 4 years ago

107

此 PR 提供了一些格言来部分规避这个问题。

考虑到该程序并不提供特别严肃的运用场合或者场景,简单用 list 来记录和跳过最近使用过的 8-10 种说法是否就足够呢?

记录最近几个确实也是个简洁的解决办法,我认为名人名言在整个文章中出现一次就够了,其他语句可以按你说的简单记录最近几次使用过的就先不使用。

chanreylee commented 4 years ago

我觉得一篇文章中长句子的重复率不要太高,短句可以多次重复,长句算是10字以上应该可以算是长句了。