Ren*_*ani 7 sql algorithm pattern-recognition artificial-intelligence r
我的数据库中有一个大表,文本顺序中有很多来自各种文本的单词.我想找到一些单词一起出现的次数/频率.
示例:假设我在许多文本中都有这4个单词:United | States | of | America.我会得到结果:
美国:50
美国:45
美利坚合众国:40
(这只是一个包含4个单词的示例,但可以使用少于4个单词).
有一些算法可以做到这一点或类似于此?
编辑:欢迎使用一些显示如何操作的R或SQL代码.我需要一个我需要做的实际例子.
表结构
我有两个表:Token有id和text.文本是,UNIQUE并且此表中的每个入口代表不同的单词.
TextBlockHasToken是保持文本顺序的表.每行代表文本中的一个单词.
它textblockid有令牌所属的文本块.sentence这是令position牌的句子,tokenid即句子内的令牌位置,也就是令牌表引用.
wil*_*ser 14
它被称为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概率,你需要从根到最后一个词的路径中所有概率的乘积.