【问题标题】:Finding language patterns in random text在随机文本中查找语言模式
【发布时间】:2013-08-10 21:49:45
【问题描述】:

我编写了一个脚本,它可以生成可能的 Twitter 句柄并检查它们的可用性。它只是遍历允许符号的不同组合:a-z, 0-9, _。 目前它已经检查了 1926220 个组合,即每个包含 1-5 个符号的组合。以下是简要结果:0 1、2 和 3 个符号的免费帐户,750 4 个免费帐户,442711 5 个。

我想知道是否有可能编写一个算法来分析这些列表并在其中找到人类可读的单词。这是一个例子:

elnsv
elnt8
eloq4
elosu
elq0_
elq15
elq46

elosu 这个词与其他词不同,事实证明西班牙甚至有一个名为 Elosu 的小镇。人类如何区分这些词?我想我可以尝试制作一本不同语言的音节标签字典,并尝试将单词与之进行比较。你能帮我解决公式或其他想法吗?

更新:对于那些想要尝试实现它的人,这里是5-symbol handles的链接。

【问题讨论】:

标签: algorithm text grammar lexical-analysis linguistics


【解决方案1】:

我会尝试使用wisdom of the crowd 来解决这个问题。

  1. Google 显示了一个 近似 数量的包含该查询的页面,例如,对我来说,您的示例中的查询 elnsv(不使用“您是否打算..” ) 给出了大约 60k 个结果,查询 elq0_ 有大约 23k 个页面,而“真实”单词 elosu 有大约 330k 个匹配页面。这是一个强烈的含义,表明这个词比其他词更可能有意义。所以,基本上这种方法意味着:使用一些搜索引擎并使用其结果来确定什么是有意义的,什么是没有意义的。

  2. elosu 这个词有一个wikipedia article,虽然它不是你想要的 elosu,但它仍然有帮助。请注意,维基百科的方法将非常好并且非常准确地确定哪个术语是有意义的单词,但是对于消除术语会有问题,所以我将它用作管道中的第一级“判断”,并将其余部分提供给其他评委。

【讨论】:

    【解决方案2】:

    好吧,在编程时,您可能必须像人类一样思考,当您查看字符串时,您首先会识别出什么字符串。 对于这样的算法,您应该使用人工智能或使用 google API 进行搜索。

    让我们以上面给出的单词为例。您有 5 个带数字的字母单词。

    因此,具有最少数字字符的单词的概率很容易被人类识别。在您的情况下,我将遵循此规则并为其创建一个程序。

    降序优先级较高的单词

    具有 5 个字母的单词优先级更高。

    4 个字母的单词(例外:数字不应该在前 4 位)

    3 个字母的单词(例外:数字不应在前 3 位)

    等等……

    最后的优先级是在第一个或最后一个带有特殊字符的单词。

    单词中间包含特殊字符的单词不应该优先。

    我可能正在使用 API 搜索 google 并尝试了 elnsv,结果将该词更改为 ensv 和 那是 ENSERVCO CORP 的股票代码。所以我要么跳过这个词,要么添加关系。

    在您的情况下,算法是这样的, 对有意义的单词以及它们的外观进行统计数据,具有数字的单词是否有意义。将它们添加到数组中并使用插入排序算法对其进行排序。使用字典数组查找关系并忘记字典中带有特殊字符的单词。 对于带有特殊字符或数字的单词,如果存在含义,您应该尝试基于网络的搜索,基本上最后留下的单词不应被人或机器识别,因此您应该借助任何搜索引擎。

    不知道我的答案是否正确,所以一定会在你提供的列表中尝试我的代码。

    【讨论】:

      【解决方案3】:

      学习英语单词的马尔可夫模型(使用字母、二元组等)并检查生成单词的概率。当然,这并非万无一失,但应该会给您带来不错的结果。

      生成可发音密码的问题非常相似,并且已经在该领域进行了一些工作。例如见this related question

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-24
        • 1970-01-01
        • 2016-10-07
        相关资源
        最近更新 更多