RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 947976
Accepted
Kamushek
Kamushek
Asked:2020-02-22 17:54:16 +0000 UTC2020-02-22 17:54:16 +0000 UTC 2020-02-22 17:54:16 +0000 UTC

在字符串中寻找模式

  • 772

我有大量的字符串,我知道它们是由一组有限的模式构建的,但我不知道是哪些。我需要在一个非常大的数据集上相当快地计算这些模式。

例如,这组模板(我不知道):

"Hello, my {0} is: {1}"  
"{0} has left our team."  
"{0} has joined the team {1}!"  

匹配下面的一组行,我唯一的:

Hello, my name is: Slim Shady  
Mike has left our team.  
Mike has joined the team Liquid!  
Hello, my name is Nikole  
Nick has joined the team Spirit!  
Elizabeth has left our team.  

任务:查找相似字符串中的模式。也就是说,在文本中找到允许您自动提出此类模式的模式。可以有很多行。

到目前为止,我已经提出了使用 N-gram 的编辑距离之类的方法。

但这东西的范围比我需要的要广,运行时间的重要性不亚于寻找模式的准确性。

因为我的单词可以完全匹配且没有错误,在我看来,在这里你可以通过某种方式提高性能。

我想制作一个单词的字母表,而不是字母,这样就可以通过单词来搜索句子。

UPD:以防万一,我会澄清在编译时既没有模板也没有字符串本身。字符串作为输入提供给程序,没有人会给我们模板。

UPD2:我们需要在已经通过的行中实时查找模式,以便在接下来我们可以找到它们的匹配项。

(评论)假设我们有nofferМама наша мыла раму和moffer Мама мыла мою раму。它必须是一个模板Мама {0} мыла {1} раму或两个模板:Мама {0} мыла раму, Мама мыла {0} раму? 这样的例子还有很多。为了避免这样的歧义,要么你需要更清楚地了解你有什么样的任务,要么你需要指出一个具体的含义,这样你才能找到一个独特的解决方案。

模式应尽可能通用,即 Мама {0} мыла {1} раму. 但它适用于类似的线路。不只是一种模式{0}

(评论)问题来了,为什么不使用模式{0}?这是最一般的。问题似乎是需要在模板集上引入某种顺序。一般来说,这个顺序是非线性的。它需要以某种方式线性化。这似乎是一项艰巨的任务。如果你说你为什么需要这个任务,你可以考虑一下。

这是整个任务: D 我需要找到这些线条的模式,以便将高度相似的线条组合成模式,例如,您可以采用标准形式的相似度百分比。

UPD3:模板应该连接相似的字符串。类似的字符串将被视为匹配的字符串N%。

алгоритм
  • 5 5 个回答
  • 10 Views

5 个回答

  • Voted
  1. Best Answer
    Егор Банин
    2020-03-12T17:57:05Z2020-03-12T17:57:05Z

    如果模式的数量有限并且它们在数据中分布相当均匀,那么拥有非常大的数据集就没有意义了。您还可以从较小的数据集中获取模板。

    正面解决方案如下所示:

    你可以想出一些从字符串中接收单词的函数(例如,只用空格分隔并去掉标点符号)。

    然后,制作一个频率词典。例如,单词“Hello”在示例集中出现了两次。另外,你还可以统计某个词在某个位置出现的次数,这样以后你不仅可以查看词的出现频率,还可以查看词出现在3-5个位置区域的频率, 例如。

    现在,对于任何单词,您都可以假设它是否是模板的一部分。如果这个词在当前位置附近的某个地方经常出现,那么它很可能是模板的一部分。

    对于数据集中的每一行,我们构建一个模板并只保留唯一值。

    在这种情况下,必须对数据进行两次处理(第一次构建频率字典,第二次 - 模式),因为我们首先需要有关整个集合是什么的信息。

    Neuronka 可以帮助您设置阈值并获得更好的结果。

    • 3
  2. gbg
    2020-03-08T13:29:04Z2020-03-08T13:29:04Z

    在算法的第一步,整个第一行“ABC”将被切割成单词,这些单词将沿着树排列(线性顺序A-> B-> C)

    收到类似的(“AEC”)字符串作为输入后,您将在树中绘制另一条路径,就在其中一个级别中,您将有一个分支,然后会收敛:

      ->B->
    A       C
      ->E->
    

    因此,您的每一行都只是穿过这棵树的一条路径。

    在为某个节点输入足够多的传出分支之后,这些分支会收敛回来,我们可以得出结论,这里有一个任意参数。

    • 2
  3. no_more_framework
    2020-03-11T07:16:55Z2020-03-11T07:16:55Z

    也许您想使某种“神经元”失明?实际上,您的问题需要更多细节(以及了解您的数学仪器处于什么水平?)。您的任务将在机器学习的一个部分中找到详尽的解决方案- “与老师一起学习” !要识别模式和“模式”,请注意CAEP算法(通过聚合新兴模式进行分类)... PS 一切顺利,“蟒蛇”来帮忙!

    • 1
  4. iluxa1810
    2020-03-11T20:13:41Z2020-03-11T20:13:41Z

    首先,我们用一种算法来寻找字符串之间的匹配百分比。

    我们从 2 个表创建一个数据库:

    模式 - 存储模式的位置 队列 - 存储原始消息的位置。

    接下来,算法是:

    我们将消息添加到队列中,并通过部分搜索算法检查模式。如果 % 满足我们的要求,那么我们就说找到了模式并从队列中删除了条目。

    如果没有找到,那么我们通过部分比较将条目与队列中的每个条目进行比较。

    当我们找到最相似的选项时,我们开始切断所有不必要的,形成一个模板。

    我不知道速度会如何,但你可以使用各种技巧,例如,将太短的字符串与太长的字符串匹配是没有意义的,等等。

    • 0
  5. Grigory Fedorinov
    2020-03-14T04:59:30Z2020-03-14T04:59:30Z
    1. NSLOVA无意义词词典(手动填写)[{"our"},{"my"}],通过手动解析前50句来填写。(ETC。)
    2. 参考书 OBRASCHENIYA [{"mother"}],通过手动解析前 50 句来填写。(ETC。)
    3. 该算法用标签替换找到的无关紧要的单词。
    4. 该算法用标签替换找到的命中,我们得到一个模板。
    5. 带有标签的结果表达式,这是模板。a) 在模板中,用空字符串替换标签,用空字符串替换空格,得到一个“干净的模板”(“chistiy_shablon”) b) 在模板中,用空字符串替换标签和一个“模板”数组words”通过正则表达式收集,通过逗号合并成一行,得到字段“shablonnie_slova”。
    6. 模式参考被添加到模板 [{"shablon":"soap frame","chistiy_shablon":"soap frame"}, "shablonnie_slova": "soap, frame", "kolvoprimenenii": "1"]。

    这样就完成了参考书的初始填写。

    主算法正在启动:我们得到“vremyazapuska”算法的开始日期。在循环中读取字符串。从该行开始,尝试形成一个模板(第 3,4 点)和一个纯模板(5)。如果模式等于输入字符串(并且该字符串不在 Exceptions 目录中),则该字符串将包含在无模式字符串目录中,并添加“vremyazapuska”字段。有一个过渡到下一个迭代处理下一行。

    Если нет попытка найти по полю "чистый шаблон" шаблон в справочнике шаблонов.
         Если не найден "чистый шаблон" шаблон добавляется в справочник шаблонов (пункт 
         6). Идет переход на следующую итерацию обработка следующей строки.
    
         Если найден "чистый шаблон" в справочнике шаблонов, то сравниваются поля с 
         текущим объектом шаблона и записью из базы (за исключением поля 
         "kolvoprimenenii").
                Если объекты равны - поле kolvoprimenenii увеличивается на 1.
                Если объекты разные по полю шаблон, то шаблон формируется с наибольшим 
                количеством тегов и записывается в базу. Поле kolvoprimenenii также в 
                этом случае увеличивается на 1. 
    

    已处理的行将从日志中删除。开始检查非模式字符串的数量。如果大于 50,则程序退出。

    无模板字符串表由人工或辅助算法解析(收集新的无关紧要的词或地址,如有必要,在模板目录中添加新模板)。如果不能对字符串做任何事情(没有无意义的词和引用) - 它将被添加到异常目录中。然后从通配符字符串表中删除该字符串。

    无模板字符串表为空后,运行主要的字符串解析算法。

    • 0

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    根据浏览器窗口的大小调整背景图案的大小

    • 2 个回答
  • Marko Smith

    理解for循环的执行逻辑

    • 1 个回答
  • Marko Smith

    复制动态数组时出错(C++)

    • 1 个回答
  • Marko Smith

    Or and If,elif,else 构造[重复]

    • 1 个回答
  • Marko Smith

    如何构建支持 x64 的 APK

    • 1 个回答
  • Marko Smith

    如何使按钮的输入宽度?

    • 2 个回答
  • Marko Smith

    如何显示对象变量的名称?

    • 3 个回答
  • Marko Smith

    如何循环一个函数?

    • 1 个回答
  • Marko Smith

    LOWORD 宏有什么作用?

    • 2 个回答
  • Marko Smith

    从字符串的开头删除直到并包括一个字符

    • 2 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5