【问题标题】:Natural Language Generation in PHPPHP中的自然语言生成
【发布时间】:2012-06-29 02:14:01
【问题描述】:

我昨晚醒来时脑子里有一个想法:PHP 可以用来生成听起来自然的随机单词吗? (就像 Lorem ipsum 的诗句)。

  1. 单字母单词:'a,e,i,o,u'
  2. 双字母词:元音和辅音的任意组合。
  3. 我认为最大字长是六个字母。

目的是用它而不是“Lorem ipsum”来填充网站模板上的空间,或者为某些 PHP 脚本发送测试电子邮件以确保 mail() 正常工作。

但我对它如何工作的想法是 PHP 会生成随机长度的单词,每个单词 1-6 个字母,并带有一些“不要这样做”规则,例如“没有两个单字母单词相邻”或“连续没有三个元音”或“连续没有三个辅音”,并在句子的 4 到 8 个单词后自动添加标点符号和大写。

这有可能吗?如果有,我可以实现任何预先存在的类或函数吗?

【问题讨论】:

  • 我在您的建议中没有看到任何不可能的内容。所以,答案很可能是“是的,有可能”——但这真的是你的问题吗?
  • 可能吗?当然。切实可行?我不太确定。也许可以使用简单的序言脚本(或其他逻辑语言)来完成,可以更轻松地解决您的问题。然后你可以从 php 调用它。(只是我的强硬,做任何你想做的事)
  • @ametren - 已编辑的问题,更多的是寻找一个开始的地方,而不是开始一个空白的 PHP 文档并试图将我的想法倾注于它。
  • 你可以生成像全文这样的词:haykranen.nl/2008/09/21/markov
  • @biziclop - 谢谢,我一定会检查一下。

标签: php nlp


【解决方案1】:

您可以采取上下文无关的语法方法:http://en.wikipedia.org/wiki/Context-free_grammar

<word> := <vowel> | <consonant><remaining word following consonant> | <vowel><remaining word following vowel>
<vowel> := a|e|i|o|u
<consonant> := b|c|d|f|g|...
<word following vowel> := <consonant><remaining word following consonant>
...and so on

用任何程序语言(包括 C 和 PHP)实现该语法,然后开始根据语法生成单词。

我不知道任何通用的 PHP 解析框架,但您可以查看编写它们的最佳实践:Best practices for writing a programming language parser

【讨论】:

    猜你喜欢
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多