精华内容
下载资源
问答
  • 通过挖掘词语间的互信息和关联词信息,继而更新传统文本表示模型,通过相似度计算来判断是否为热点话题的后续话题,最后通过更新热点微博话题向量来避免话题漂移问题。实验证明了所提算法针对微博热点话题追踪是有效的...
  • python实现PMI(求词语关联性)

    千次阅读 2018-03-19 20:37:25
    至于PMI,是在文本处理中,用于计算两个词语之间的关联程度.比起传统的相似度计算, pmi的好处在于,从统计的角度发现词语共现的情况来分析出词语间是否存在语义相关 , 或者主题相关的情况.场景实例说起接触PMI的原因,是...

    关于PMI

    PMI, 是互信息(NMI)中的一种特例, 而互信息,是源于信息论中的一个概念,主要用于衡量2个信号的关联程度.至于PMI,是在文本处理中,用于计算两个词语之间的关联程度.比起传统的相似度计算, pmi的好处在于,从统计的角度发现词语共现的情况来分析出词语间是否存在语义相关 , 或者主题相关的情况.

    场景实例

    说起接触PMI的原因,是我在一个主题词挖掘研究的时候, 想到能否融入pmi,以增强主题词的特征.于是乎, 我寻找了一些文献材料,其中不少印证了pmi具有这样的功能,我可以分享当中的一篇: 
    基于互信息的文本自动摘要_刘星含 
    当时,我们需要做的工作是聚集微博中的热点事件, 然后抽取主题词.以”六小龄童上春晚”主题为例, 我收集了9条热门微博,分别如下:

    1.郭富城方发声明否认炒作,真的是这样吗?我发布了头条文章:《罗生门:六小龄童上春晚究竟谁炒作?从这开8并怀念当年那美好的西游》 
    2.除夕还剩几天时间,这几天“猴哥”#六小龄童#突然成为网络热搜词,朋友圈全是“帮猴哥上春晚”的帖子。在充当“自来水”的同时,有人开始反思,“大圣”热闹上春晚话题是不是一种“情怀绑架”?有网友说“这年头,似乎打上情怀的标签,都能把一个看似毫无逻辑的事,套上隆重的仪式感,煽动起某种情绪。 
    ​3.呼吁六小龄童老师上春晚是好事,是人人盼望之事,但是不要被人牵着鼻子走,像央视张立,借着六小龄童老师炒作自己,中伤他人,这对章老师本人也不是益事,更不会促进什么期望实现。 
    4.发布了头条文章:《六小龄童,你真的不配上春晚!》 这两天大家都在为六小龄童鸣不平,咱说句公道话,六小龄童,你不配上春晚!别急着拍砖,听我细细道来!〔希望能静下来看完内容再评论〕[微笑] 
    5.凡事物极必反,现在给央视的舆论压力足够大了,甚至有点过了,而且我觉得现在最大的受害者还是六小龄童老师,不管最后上不上春晚,六小龄童老师现在估计都十分尴尬。大家可以稍微缓一缓,毕竟春晚的不可预测性是有太多先例的,04年那次六小龄童老师还是腊月28才接到通知临时进组的呢。[doge] 
    6.#热点#【六小龄童:如果上不了我就在家看春晚】“其实我完全没有料到,观众会对我上春晚的事这么轰动。我很感动,很感谢。除夕如果上(春晚),那就去给大家拜年,让大家高兴。如果没有上,我会和我的家人一起看春晚,继续支持央视春节联欢晚会。”昨日,@六小龄童 接受采访时说。 
    7.​#支付宝集福#怎么了?全国人都在找敬业福,支付宝红包口令?还是希望看到#六小龄童上春晚# 
    8.如何看待有的人因为六小龄童老师没上春晚就骂tfboys 
    9.#帮六小龄童上春晚#故事大概是这样的,央视内部@央视张立 都实在看不下去了, 站出来为大家和@六小龄童 爷爷开口,然后就有人给他发了消息要删微博。还是那句话,六小龄童在台下嗑瓜子我们也愿意看。@央视张立 必须挺你。好棒哒![赞]挺他的请转发支持! #玩在成都#

    PMI原理

    根据pmi(x, y) = p(x, y) / [ p (x) * p(y) ] , 即两个单词共现的概率除以两个单词的频率乘积, 这个的概率是document frequency , 实现起来并不是很难, 不是关键是对 文档 – 单词 的存储, 建议使用倒排索引的结构, 这样可以方便存储和计算. 而我在实验中, 由于单词与文档并不多, 所以采用的是文档词语关联矩阵的思想.

    代码实现

    我使用的分词工具包是结巴分词, 对原来的文本进行以下三个操作:

    1 去表情词:

     def removeEmoji(self,sentence):
            return re.sub('\[.*?\]', '', sentence)
    • 1
    • 2

    2 提取关键词:

    def ExtractWord(self,wordlist):
            sentence = ','.join(wordlist)
            words =jieba.analyse.extract_tags(sentence,5)
            wordlist = []
            for w in words:
                wordlist.append(w)
            return wordlist
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3 实现PMI

    # coding=utf-8
    
    class PMI:
        def __init__(self, document):
            self.document = document
            self.pmi = {}
            self.miniprobability = float(1.0) / document.__len__()
            self.minitogether = float(0)/ document.__len__()
            self.set_word = self.getset_word()
    
        def calcularprobability(self, document, wordlist):
    
            """
            :param document:
            :param wordlist:
            :function : 计算单词的document frequency
            :return: document frequency
            """
    
            total = document.__len__()
            number = 0
            for doc in document:
                if set(wordlist).issubset(doc):
                    number += 1
            percent = float(number)/total
            return percent
    
        def togetherprobablity(self, document, wordlist1, wordlist2):
    
            """
            :param document:
            :param wordlist1:
            :param wordlist2:
            :function: 计算单词的共现概率
            :return:共现概率
            """
    
            joinwordlist = wordlist1 + wordlist2
            percent = self.calcularprobability(document, joinwordlist)
            return percent
    
        def getset_word(self):
    
            """
            :function: 得到document中的词语词典
            :return: 词语词典
            """
            list_word = []
            for doc in self.document:
                list_word = list_word + list(doc)
            set_word = []
            for w in list_word:
                if set_word.count(w) == 0:
                    set_word.append(w)
            return set_word
    
        def get_dict_frq_word(self):
    
            """
            :function: 对词典进行剪枝,剪去出现频率较少的单词
            :return: 剪枝后的词典
            """
            dict_frq_word = {}
            for i in range(0, self.set_word.__len__(), 1):
                list_word=[]
                list_word.append(self.set_word[i])
                probability = self.calcularprobability(self.document, list_word)
                if probability > self.miniprobability:
                    dict_frq_word[self.set_word[i]] = probability
            return dict_frq_word
    
        def calculate_nmi(self, joinpercent, wordpercent1, wordpercent2):
            """
            function: 计算词语共现的nmi值
            :param joinpercent:
            :param wordpercent1:
            :param wordpercent2:
            :return:nmi
            """
            return (joinpercent)/(wordpercent1*wordpercent2)
    
        def get_pmi(self):
            """
            function:返回符合阈值的pmi列表
            :return:pmi列表
            """
            dict_pmi = {}
            dict_frq_word = self.get_dict_frq_word()
            print dict_frq_word
            for word1 in dict_frq_word:
                wordpercent1 = dict_frq_word[word1]
                for word2 in dict_frq_word:
                    if word1 == word2:
                        continue
                    wordpercent2 = dict_frq_word[word2]
                    list_together=[]
                    list_together.append(word1)
                    list_together.append(word2)
                    together_probability = self.calcularprobability(self.document, list_together)
                    if together_probability > self.minitogether:
                        string = word1 + ',' + word2
                        dict_pmi[string] = self.calculate_nmi(together_probability, wordpercent1, wordpercent2)
            return dict_pmi
    
    

    具体的代码放在我的github:https://github.com/Quincy1994/PMI

    展开全文
  • 为了解决传统文本表示方法袋模型对文本语义的忽略问题,提出一种融合关联关系和统计信息的短文本建模方法。通过词语之间的内联及外联关系耦合得到词语关联关系,充分挖掘了显示和隐含的语义信息;同时以关联关系...
  • 提出了一种基于语义关联的中文网页主题提取方法,首先借助滑动窗口和“知网”计算词语间的语义相似度,形成候选名词对集合;然后基于该集合生成无向图表示词语间的语义联系,并通过该无向图对主题权重进行建模;...
  • 我们都知道词语是有语意的(semantic meaning),如果我们想把A与A'区分开的话,我们就要明确这两个的semantic meaning。   比如说: 苹果与梨子是不同的,为什么不同呢,苹果比梨子圆些;苹果...

    关联规则可能是看数据挖掘书的第一个topic。很多的书也会举一个卖尿片的例子,有兴趣的朋友上网找找吧,很经典。我下面要说的是我现在搞的研究,词语之间的关联(association relationship between words)。我们都知道词语是有语意的(semantic meaning),如果我们想把词A与词A'区分开的话,我们就要明确这两个词的semantic meaning。

     

    比如说:

    苹果与梨子是不同的,为什么不同呢,苹果比梨子圆些;苹果是红色或绿色的,而梨子是黄色的;苹果没有梨子多汁...还有很多特征,可能说不尽那么多特征。从另一个角度来看的话就是:

     

                 苹果   梨子

    圆滑度     高      低

    颜色      红/绿    黄

    水份        少      多

    ....         ...      ...

     

     

    现在的问题是,对于一个事物,我们有说不尽的属性(attribute),我们只有把这些所有的属性都找出来,然做后一个差(相减,或其它计算距离的方法),才能比较两个词,苹果与梨子的差异。

     

    而我们现在做的这个词语之间的关联可以间接地把这一此绕过去,我们不做semantic的东西,semantic的东西也说不清楚的(目前,希望以后有高手能搞出来,哈~)。

     

    引用我毕业论文的一段话:

     

    In everyday life, symbols are used as a transmission medium for communication. However, a word is not only a symbol, but a concept with some degree of subjective understanding. When talking about ‘Sports’ for example, people will associate with some “related” words, such as ‘Football’, ‘Basketball’, and so on. If two persons associate the concept to a similar set of “related” words, then their communication can be easier and more effective.

     

    基于这样的一个假设(hypothesis),系统通过学习一些文章(具体的计算要看我的论文《Background Net for Personalized Keywords on Article Selection》),就会得到一个人的阅读背景,我文章中把它叫做Background Net。我们用它应用在了文章的分类中,也就是由用户提供一些他喜欢的文章,然后用我这个方法把用户的兴趣爱好抓取出来,然后对文章数据库里面的文章进行评价,把最符合用户的文章拿出来,反馈给用户。这一个方法呢,可以由系统通过学习用户指定的文章就可以抓到用户需求的文章的特征,而并不需要用户给出需要文章的特征,但是关键字还是要用户给的。

     

    明确一点的就是,这是一种association analysis,并不是说association analysis就是只有这一种应用。却记却记,世上没有绝对。哈~

     

    展开全文
  • 机器学习相关文献里面,经常会用到点互信息PMI(Pointwise Mutual Information)这个指标来衡量两个事物之间的相关性(比如两个)。 关于PMI PMI, 是互信息(NMI)中的一种特例, 而互信息,是源于信息论中的一个概念,...

    转载: https://blog.csdn.net/zyq11223/article/details/90267069
    感谢原作者,如有侵权,请联系删除。

    1. 点互信息PMI

    机器学习相关文献里面,经常会用到点互信息PMI(Pointwise Mutual Information)这个指标来衡量两个事物之间的相关性(比如两个词)。

    关于PMI
    PMI, 是互信息(NMI)中的一种特例, 而互信息,是源于信息论中的一个概念,主要用于衡量2个信号的关联程度.
    至于PMI,是在文本处理中,用于计算两个词语之间的关联程度.
    比起传统的相似度计算, pmi的好处在于,从统计的角度发现词语共现的情况来分析出词语间是否存在语义相关 , 或者主题相关的情况.

    其原理很简单,公式如下:
    在这里插入图片描述
    在概率论中,我们知道,如果x跟y不相关,则p(x,y)=p(x)p(y)。二者相关性越大,则p(x, y)就相比于p(x)p(y)越大。

    用后面的式子可能更好理解,在y出现的情况下x出现的条件概率p(x|y)除以x本身出现的概率p(x),自然就表示x跟y的相关程度。

    这里的log来自于信息论的理论,而且 log 1 = 0 ,也恰恰表明P(x,y) = P(x)P(y),相关性为0,而且log是单调递增函数,所以 “P(x,y) 就相比于 P(x)P(y) 越大,x 和 y 相关性越大” 这一性质也得到保留。

    举个自然语言处理中的例子来说,我们想衡量like这个词的极性(正向情感还是负向情感)。我们可以预先挑选一些正向情感的词,
    比如good。然后我们算like跟good的PMI。

    通常我们可以用一个Co-occurrence Matrix来表示对一个语料库中两个单词出现在同一份文档的统计情况,例如
    在这里插入图片描述
    以计算PMI(information,data)为例则有(其中分母上的19是上表所有数值之和):
    在这里插入图片描述

    其他中间结果如下表所示:
    在这里插入图片描述
    但是从上表中你可能会发现一个问题,那就是你有可能会去计算 log 0 = -inf,即得到一个负无穷。为此人们通常会计算一个PPMI(Positive PMI)来避免出现 -inf,即
    在这里插入图片描述

    1. 互信息MI

    点互信息PMI其实就是从信息论里面的互信息这个概念里面衍生出来的。

    互信息即:
    在这里插入图片描述
    其衡量的是两个随机变量之间的相关性,即一个随机变量中包含的关于另一个随机变量的信息量。所谓的随机变量,即随机试验结

    果的量的表示,可以简单理解为按照一个概率分布进行取值的变量,比如随机抽查的一个人的身高就是一个随机变量。

    可以看出,互信息其实就是对X和Y的所有可能的取值情况的点互信息PMI的加权和。因此,点互信息这个名字还是很形象的。

    1. sklearn编程
    from sklearn import metrics as mr
    mr.mutual_info_score(label,x)
    
    • 1
    • 2

    label、x为list或array。
    计算x和label的互信息。

    参考:https://blog.csdn.net/u013710265/article/details/72848755
    https://blog.csdn.net/baimafujinji/article/details/6509820
    https://blog.csdn.net/qq_30843221/article/details/50767590

    展开全文
  • Oracle的同义(synonyms)详解从字面上理解就是别名的意思,和视图的功能类似。就是一种映射关系。同义语法:CREATE[PUBLIC] SYNONYM synonym FOR object;1.创建同义语句:create public synonym table_name ...

    Oracle的同义词(synonyms)详解

    从字面上理解就是别名的意思,和视图的功能类似。就是一种映射关系。

    同义词语法:CREATE

    [PUBLIC] SYNONYM synonym FOR object;

    1.创建同义词语句:

    create public synonym table_name for

    user.table_name;

    其中第一个user_table和第二个user_table可以不一样。

    此外如果要创建一个远程的数据库上的某张表的同义词,需要先创建一个Database

    Link(数据库连接)来扩展访问,然后在使用如下语句创建数据库同义词:create synonym table_name for

    table_name@DB_Link;

    当然,你可能需要在user用户中给当前用户(user2)授权: grant select/delete/update on

    user2

    2.删除同义词:

    drop public synonym

    table_name;

    3.查看所有同义词:

    select * from

    dba_synonyms

    同义词拥有如下好处:节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;扩展的数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;同义词可以创建在不同一个数据库服务器上,通过网络实现连接。

    知识扩展:数据库对象

    表、视图、序列、过程、函数、程序包,甚至其它同义词都可以创建同义词。

    1、同义词:私有同义词、公有同义词。

    私有同义词只能被当前模式的用户访问。私有同义词名称不可与当前模式的对象名称相同。要在自身的模式创建私有同义词,

    用户必须拥有Create

    Synonym系统权限。要在其它用户模式创建私有同义词,用户必须拥有Create Any

    Synonym系统权限。

    公有同义词可被所有的数据库用户访问。要创建公有同义词,用户必须拥有Create Public

    Synonym系统权限。

    创建私有同义词语法:

    Create [OR REPLACE]

    SYNONYM [schema.]synonym_name FOR [schema.]object_name;

    其中:OR

    REPLACE表示在同义词存在的情况下替换该同义词。

    synonym_name表示要创建的同义词的名称。

    object_name指定要为之创建同义词的对象的名称。

    示例1:create synonym

    s_emp for scott.emp;

    创建公有同义词语法:

    Create PUBLIC SYNONYM

    synonym_name FOR [schema.]object_name;

    示例2:create public

    synonym emp_syn from scott.emp;

    可以查询字典视图User_Synonyms来查看用户所创建的同义词的详细信息

    删除同义词语法:Drop Synonym

    synonym_name; 删除公有同义词加上一个Public

    此命令只删除同义词,不会删除对应的表。

    2、序列:是用来生成唯一、连续的整数的数据库对象。序列通常用来自动生成主键或唯一键的值。

    创建序列语法如下:

    Create SEQUENCE

    sequence_name

    [START WITH integer]

    [INCREMENT BY integer]

    [MAXVALUE integer|NOMAXVALUE]

    [MINVALUE integer|NOMINVALUE]

    [CYCLE|NOCYCLE]

    [CACHE interger|NOCACHE];

    其中:START

    WITH是指定要生成的第一个序列号。对于升序序列,其默认值为序列的最小值。对于降序序列,其默认值为序列的最大值。

    INCREMENT

    BY是用于指定序列号之间的间隔。其默认值为1。如果integer为正值,则生成的序列将按升序排列,否则按降序排列。

    MAXVALUE指定序列可以生成的最大值。

    NOMAXVALUE这是默认选项,将升序序列的最大值设为10的27次幂,将降序序列的最大值设为-1。

    MINVALUE指定序列的最小值。MINVALUE必须小于或等于START

    WITH的值,并且必须小于MAXVALUE。

    NOMINVALUE这是默认选项,将升序序列的最小值设为1,将降序序列的最小值设为-10的26次幂。

    CYCLE指定序列在达到最大值或最小值后,将继续从头开始生成值。

    NOCYCLE这是默认选项。指定序列在达到最大值或最小值后,将不能再继续生成值。

    CACHE使用CACHE选项可以预先分配一组序列号,并将其保留在内存中,这样可以更快的访问序列号。

    NOCACHE此项则不会为加快速度而预先分配序列号。如果在创建序列时忽略了CACHE和NOCACHE选项,Oracle将默认缓存20个序列号。

    示例3:Create SEQUENCE

    toys_seq

    START WITH

    10

    INCREMENT

    BY 2

    MAXVALUE

    2000

    MINVALUE

    10

    NOCYCLE

    CACHE

    30;

    访问序列:可以通过CURRVAL和NEXTVAL伪列来访问该序列的值。

    示例4:演示从序列toys_seq中选择值插入toys表中的toyid列。执行成功将会在该表的toyid列插入值"P10"和"P12"。

    INSERT INTO

    toys(toyid,toyname,toyprice)

    values('p'||toys_seq.NEXTVAL,'TWENTY',25);

    INSERT INTO

    toys(toyid,toyname,toyprice) values('p'||toys_seq.NEXTVAL,'MAGIC

    PENCIL',75);

    示例5:演示如何查看序列当前值

    Select toys_seq.CURRVAL from

    dual;

    更改序列:ALTER

    SEQUENCE命令用于设置或删除MINVALUE或MAXVALUE、修改增量值、修改缓存中的序列号的数目。

    修改序列语法如下:注意,不能修改序列的START

    WITH参数。在修改序列时,应注意升序序列的最小值应小于最大值。

    ALTER SEQUENCE

    [schema.]sequence_name

    [INCREMENT BY integer]

    [MAXVALUE integer|NOMAXVALUE]

    [MINVALUE integer|NOMINVALUE]

    [CYCLE|NOCYCLE]

    [CACHE interger|NOCACHE];

    示例6:演示如何设置一个新的MAXVALUE,并为toys_seq序列打开了CYCLE。

    ALTER SEQUENCE

    toys_seq

    MAXVALUE

    5000

    CYCLE;

    可以查询字典视图User_Sequences来查看用户所创建的序列的详细信息

    删除序列语法:Drop SEQUENCE

    toys_seq;

    3、视图

    视图是存储的查询定义。

    创建视图的语法如下:

    Create [OR REPLACE]

    [FORCE | NOFORCE] VIEW view_name[(alias,alias,...)] AS

    select_statement

    [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ

    ONLY];

    其中:OR

    REPLACE表示在该视图存在的话,将重新创建该视图。

    FORCE使用此关键字,则无论基表是否存在,都将创建视图。

    NOFORCE这是默认值。如果使用此关键字,则仅当基表存在时才创建视图。

    view_name表示要创建视图的名称。

    alias指定在视图里面列的名字,名字数目必须与视图所选择的表达式的数目相匹配。

    select_statement表示Select语句。

    WITH CHECK

    OPTION此选项指定只能插入或更新视图可以访问的行。术语constraint表示为CHECK

    OPTION约束指定的名称。

    WITH READ

    ONLY此选项确保不能在此视图上执行任何修改操作。

    示例7:演示创建一个名为ven_view的视图,该视图与vendor_master表具有相同的结构。

    Create VIEW ven_view AS select

    * from vendor_master;

    视图中的ORDER

    BY子句:以便在查询视图时即使不使用Order By子句,结果集也会按指定的顺序排列行。

    示例8:Create OR REPLACE

    VIEW ven_view(编号,日期) AS select orderno,odate from vendor_master

    order by venname;

    创建带有错误的视图:使用FORCE选项

    在以下情况下,Oracle也会创建视图:

    视力定义的查询引用了一个不存在的表;视图定义的查询引用了现有表中无效的列;视图的所有者没有所需的权限。

    示例9:下面创建一个基于venmast的视图。但数据库中并不存在名为"venmast"的表。

    Create FORCE VIEW ven

    AS select * from venmast;

    如果稍后创建名为venmast的表,可以使用ALTER VIEW ven

    COMPILE;

    联接视图:

    示例:演示如何创建联接视图

    Create OR REPLACE

    VIEW ven_ord_view AS select

    vm.vencode,venname,orderno,odate,ostatus

    from vendor_master

    vm,order_master om where vm.vencode=om.vencode;

    键保留表:在联接视图中,如果视图包含了一个表的主键,并且也是这个视图的主键,则这个键被保留,则这个表被称为键保留表。

    ven_ord_view视图以vendor_master和order_master这两个表为基表。order_master表被视为键保留表,因为orderno既是order_master表

    的主键,也是视图的主键。而vendor_master表不被视为键保留表,因为vendor_master表的主键vencode是联接字段,不是视图的主键。

    示例10:此示例成功修改了记录,因为odate列属于键保留表order_master。对于非键保留表vendor_master的venname列的更新则是不允许的。

    update wen_ord_view

    odate=odate+1 where vencode='V003';

    注意:运行此示例时,必须确保基表的主键已正确创建。

    可以查询字典视图User_Updateble_Columns来查看联接视图中可更新的列。

    可以查询字典视图User_Views来查看用户所创建的视图信息。

    视图中的函数:视图可以使用单行函数(由数字、字符、日期组成)、分组函数和表达式。

    示例11:此示例用UPPER函数创建视图,注意使用函数或表达式时,应赋予列一个别名。

    Create VIEW

    vendor_master_view AS select vencode,UPPER(venname) vendor_name

    from vendor_master;

    删除视图语法:Drop VIEW

    view_name ;

    4、索引:

    查询User_indexes可以获取有关用户已创建的索引的详细信息。

    查询User_ind_partitions可以获取有关用户已创建的分区索引的详细信息。

    查询User_ind_columns可以获取有关列(用户的索引是基于这些列创建的)的详细信息。

    唯一索引、组合索引、反向键索引、位图索引和基于函数的索引。

    索引在逻辑上物理上都独立于关联表中的数据,在任何时候都可以创建或删除索引,而不会影响基表或其它索引。

    创建普通索引的语法:

    Create INDEX index_name ON table_name(column_list) [TABLESPACE

    tablespace_name];

    其中:index_name指所创建索引的名称。

    table_name表示为之创建索引的表名。

    column_list是在其上创建索引的列名列表,可以基于多列创建索引。

    tablespace_name为索引指定表空间。

    示例12:演示如何在itemfile表的itemcode列上创建索引

    create index item_index on itemfile(itemcode);

    ALTER INDEX语句的REBUILD选项可以用来重建现有的索引。该选项提供的性能要优于使用DROP INDEX和CREATE

    INDEX语句重新创建索引。

    示例13:重建索引

    ALTER INDEX item_index REBUILD;

    删除索引语法:Drop INDEX item_index;

    (1)唯一索引:此索引可以确保在定义索引的列中,表的任意两行的值都不相同。Oracle自动为表的主键列创建唯一索引。

    可以使用Create UNIQUE

    INDEX命令明确地创建唯一索引。

    示例14:在itemfile表的itemcode列上创建了一个名为item_index的唯一索引。

    Create UNIQUE INDEX item_index ON itemfile(itemcode);

    (2)组合索引:组合索引是在表中的多个列上创建的索引。组合索引中列的顺序是任意的,不必是表中相邻的列。

    创建组合索引时,应注意定义中使用的列的顺序。通常,最频繁访问的列应放置在列表的最前面。

    示例15:在itemfile表上创建了一个名为comp_index的组合索引,当查询该表的的WHERE子句同时包含这两个列或只包含

    p_category列时,以下示例语句创建的索引将用于检索数据,但如果单独使用itemrate列,则索引不能用于检索数据。

    Create INDEX comp_index ON

    itemfile(p_category,itemrate);

    (3)反向键索引:通常建立在一些值连续增长的列上,例如列中的值是是由序列产生的情况。

    示例16:在itemfile表上创建了一个名为rev_index的反向键索引。注意使用REVERSE关键字。

    Create INDEX rev_index ON itemfile(itemcode)

    REVERSE;

    示例17:使用关键字NOREVERSE可以将反向键索引重建为标准索引。

    ALTER INDEX rev_index REBUILD NOREVERSE;

    注意:不能将标准索引重建为反向键索引。

    (4)位图索引:如果某个列的值重复超过一百次,则可以考虑在该列上创建位图索引。

    示例18:itemcode是order_detail表中的低基数列,因为货物编码在大多数订单中都是重复的,因此适合在该列上创建位图索引。

    Create BITMAP INDEX bit_ind1 ON order_detail(itemcode);

    位图索引不应当用在频繁发生的INSERT,UPDATE,DELETE操作的表上。位图索引最适合于数据仓库和决策支持系统。

    (5)索引组织表:索引组织表与在一个或多个列上建立索引的普通表相似,但它无需为表和索引维护两个单独的存储空间,

    数据库系统仅维护一个索引,该索引包含相应的已编码键值和与其关联的列值。

    示例19:使用ORGANIZATION INDEX子句来创建索引组织表。

    Create table ind_org_tab

    (

    vencode NUMBER(4) primary key,

    注意:primary

    key是创建索引组织表所必需的。不允许使用分区。

    venname

    VARCHAR2(20)

    )

    organization index;

    索引组织表适合于通过主键来访问数据。

    (6)基于函数的索引:如果在WHERE子句的算术表达式或函数中已经包含了某个列,则不会使用该列上的索引。不能在表达式包含任何

    聚合函数,LOB列、REF列或包含LOB或REF的对象类型上创建基于函数的索引。

    示例20:venname是vendor_master表的一个列,用于存储供应商的姓名,假定所有供应商的姓名都以混合大小写的形式存储

    (如:John Smith、Dave Jones、Tony

    Greig等等),同时假定我们经常需要根据供应商的姓名来查询表的数据。由于

    姓名是以混合大小写的形式存储的,因此可能很难给出姓名的正确大小写形式。可以创建如下索引:

    Create INDEX vn_ind ON vendor_master(UPPER(venname));

    示例21:演示如何使用前面创建的基于函数的索引检索数据。

    select * from vendor_master where

    UPPER(venname)='SMALL';

    要创建基于函数或表达式的索引,必须具有QUERY REWRITE系统权限。

    (7)索引中的分区:与对表进行分区类似,Oracle也允许对索引分区。牵引分区可以存储在不同的表空间中。

    局部分区索引:Oracle为表的每个分区建立一个独立的索引。

    示例22:先创建分区表

    Create table

    order_mast

    (

    orderno

    number(4),

    venname varchar2(20)

    )

    partition by

    range(orderno)

    (

    partition oe1 values less than(1000),

    partition

    oe2 values less than(2000),

    partition oe3 values less

    than(maxvalue)

    );

    接着创建局部索引:

    create INDEX myind ON

    order_mast(orderno) LOCAL;

    全局分区索引:是指在分区表或非分区表上创建的索引。

    示例23:在上面创建的分区表上创建全局索引

    create INDEX glb_ind ON

    order_mast(orderno) GLOBAL

    partition by range(orderno)

    (

    partition ip1 values

    less than(1500),

    partition ip2 values less than(maxvalue)

    );

    在有3个分区的表上创建2个分区的索引。注意:不能在散列分区或子分区建立全局索引。

    全局非分区索引:全局分区索引是在分区表上创建的全局索引,它类似于非分区表上的索引,索引的结构不会被分割。

    展开全文
  • 第1招词语理解是重点句子是由词语构成的,一个句子是由若干个有特定意义的词语组成。因此,要想写出好句子,必须要理解自己所运用的词语,能够准确理解所要运用词语的含义,包括其词性和感情色彩,才能够更加明晰地...
  • 该方法利用词语关联分布规范化因子,对互信息中目标和基关联度度量方法进行了修正,通过计算目标和基关联度,构造目标的属性向量,由目标的属性向量,利用夹角余弦法计算出目标词语相似度。实验结果验证...
  • 研究并设计了词语相关度计算模型,即在充分考虑语义资源《知网》中概念间结构特点、概念信息量和概念释义的基础上,利用概念与实例间的搭配所表征的词语间强关联来进行词语相关度的计算。实验结果表明,该模型...
  • 向量 如上一篇博客所述,文章可用TF-IDF算法表示为向量,相应的,词语也...理解:只要两个总在一起出现,他们之间的关联性应该越强,距离应该也越近。我们想一想,如果一个不仅出现的频率高,而且任何句子中都
  • 简单方式,送入独热编码(one-hot encoding)学习系统,长度为词汇表长度的向量,词语对应位置元素为1,其余元素为0。向量维数很高,无法刻画不同词语的语义关联。共生关系(co-occurrence)表示单词,解决语义关联,...
  • 的向量表示

    2019-05-07 14:11:05
    我们知道语言的之间是有一定关联性的,能不能利用这些关联性设置我们的向量来编码我们的词语。 Word2Vec方法简介: 他是一种训练向量的一种框架。 我们有大量语料数据,其中每一个单词在语料...
  • 简单方式,送入独热编码(one-hot encoding)学习系统,长度为词汇表长度的向量,词语对应位置元素为1,其余元素为0。向量维数很高,无法刻画不同词语的语义关联。共生关系(co-occurrence)表示单词,解决语义关联,...
  • 简单方式,送入独热编码(one-hot encoding)学习系统,长度为词汇表长度的向量,词语对应位置元素为1,其余元素为0。向量维数很高,无法刻画不同词语的语义关联。共生关系(co-occurrence)表示单词,解决语义关联,...
  • 索引:正排索引 -文档id到文档内容、单词的关联关系倒排索引-单词到文档id的关联关系:-主要包含两部分:单词词典(Term Dictionary),由B+Tree实现-记录所有文档的单词,一般比较大-记录单词到倒排列表的关联关系倒...
  • 在领域情感词典构建过程中,通常仅使用词频作为筛选种子词集的标准,而并未考虑其内部词语关联程度,这会导致种子词集聚类效果不明显,进而影响情感词语归类精度。因此,基于向量模型,提出一种情感词典种子词集...
  • 形式如下:统计语言模型的一般形式直观、准确,n元模型中假设在不改变词语在上下文中的顺序前提下,距离相近的词语关系越近,距离较远的关联度越远,当距离足够远时,词语之间则没有关联度。但该模型没有完全利用...
  • 向量-LRWE模型

    2017-11-23 22:52:00
    我们尝试基于CBOW模型,将知识... 在Word2vec的CBOW模型中,通过上下文的预测目标,目标是让目标在其给定上下文出现的概率最大,所以向量训练的结果是与其上下文的关联的。然而 CBOW模型只考虑了词语的...
  • 今天要介绍的是更高效的FP-growth算法(FP指的是Frequent Pattern),它可以用到搜索提醒,常用,挖掘强关联性商品,商品推荐等领域上。挖掘商品关联系或者词语之间的关联性,需要做的事是构造各种商品组合然后...
  • 对于gensim,向量化文本只能通过dictionary.doc2bow来形成list(tuple(id,freq))类型的向量,为了体现文档词语的前后关联,需要对gensim进行拓展。 import jieba import gensim import numpy as np from gensim...
  •  作为语义关联问题的一个解决方案,依据共生关系表示单词的思路由来已久。这种方法的基本思路是,遍历一个大规模文本语料库,针对每个单词,统计其在一定距离范围内的周围词汇。然后,用附近词汇的规范化数量表示每...
  • 一想到这里, 为了能够从 姓名 这个词组 box 得到 人名 box 结果, 除了从相对位置入手,词语之间的关联性也是一个入手点。 google 已经将预训练模型放出来在官方的github上面了,利用预训练模型,进行嵌入是一件...
  • 用one-hot向量的方式表示词汇无法得到词语之间的相似性和联系性,这个不符合我们的语言习惯,我们很多词语都是有联系的。 比如:语义上,“橘子”和“苹果”,都是水果。“你”和“你们”只是复数的区别。“go”和...
  • 网上收集近15万同义词库、近义词库,经过小编收集整理,将很多意思关联不大的词语已经去除,适合火车头采集器,ET采集器,DZ插件类采集器等

空空如也

空空如也

1 2 3 4 5 6
收藏数 102
精华内容 40
关键字:

关联词词语