内容简介:翻译自: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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 算法 – 给出一个单词,打印其索引,可以相应地增加单词
- 每日一道算法题--leetcode 290--单词规则--python
- 高频算法面试题(字符串) leetcode 212. 单词搜索 II
- 算法 – 有效地反转字符数组中的单词(而不是字符)的顺序
- Pocketsphinx – 添加单词和提高准确性
- Spark入门(三)--Spark经典的单词统计
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
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》 这本书的介绍吧!