sql – 我可以使用哪种算法来查找常见的相邻单词/模式识别?

栏目: 数据库 · 发布时间: 5年前

内容简介:翻译自:https://stackoverflow.com/questions/8069531/which-algorithm-i-can-use-to-find-common-adjacent-words-pattern-recognition

我的数据库中有一个大表,文本顺序中有很多来自各种文本的单词.我想找到一些单词一起出现的次数/频率.

示例:假设我在许多文本中都有这4个单词:United |国家|的美国.我会得到结果:

美国:50

美国:45

美利坚合众国:40

(这只是一个包含4个单词的示例,但可以使用少于4个单词).

有一些算法可以做到这一点或类似于此?

编辑:欢迎使用一些显示如何操作的R或 SQL 代码.我需要一个我需要做的实际例子.

表结构

我有两个表:具有id和文本的令牌.文本是独一无二的,此表中的每个入口代表一个不同的单词.

TextBlockHasToken是保持文本顺序的表.每行代表文本中的一个单词.

它有textblockid,它是令牌所属文本的块.作为令牌的句子的句子,作为句子内的令牌位置的位置,以及作为令牌表引用的tokenid.

它被称为N-gram;在你的情况下一个4克.它确实可以作为马尔可夫链的副产品获得,但您也可以使用滑动窗口(大小4)来遍历(线性)文本,同时更新4维“直方图”.

更新2011-11-22:

在给定当前状态的情况下,马尔可夫链是一种模拟切换到新状态的概率的方法.这是“状态机”的随机等价物.在自然语言的情况下,“状态”由“前N个单词”组成,这意味着您将先验概率(在前N个单词之前)视为equal_to_one.计算机人员很可能会在NLP案例中使用树来实现马尔可夫链. “状态”只是从根到当前节点的路径,而words_to_follow的概率是当前节点的后代的概率.但是每次我们选择一个新的子节点时,我们实际上都会向下移动树,并“忘记”根节点,窗口只有N个字宽,这将转换为深入树中的N个级别.

你可以很容易地看到,如果你像这样走马尔科夫链/树,在第一个单词之前的概率是1,第一个单词之后的概率是P(w1),在第二个单词= P(w2)之后||因此,在处理语料库时,您构建马尔可夫树(:=更新节点中的频率),在骑行结束时,您可以通过频率(单词)/ SUM估计给定单词选择的概率(FREQ(兄弟姐妹)).对于在树中5深的单词,这是单词的概率,给定前4个单词.如果你想要N-gram概率,你需要从根到最后一个单词的路径中所有概率的乘积.

翻译自:https://stackoverflow.com/questions/8069531/which-algorithm-i-can-use-to-find-common-adjacent-words-pattern-recognition


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Eloquent JavaScript

Eloquent JavaScript

Marijn Haverbeke / No Starch Press / 2011-2-3 / USD 29.95

Eloquent JavaScript is a guide to JavaScript that focuses on good programming techniques rather than offering a mish-mash of cut-and-paste effects. The author teaches you how to leverage JavaScript's......一起来看看 《Eloquent JavaScript》 这本书的介绍吧!

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具