基于上下文信息和排序学习的实体链接方法

摘要

为解决英语命名实体链接问题,提出一种基于上下文信息和排序学习的实体链接方法。首先使用上下文信息对实体指称进行扩充,并在维基百科中检索候选实体列表,然后通过抽取实体指称与候选实体之间的各类特征,利用ListNet排序算法对候选实体列表进行排序,选出Top1的候选实体作为链接结果,最后对未找到候选的实体指称即NIL实体,通过实体聚类算法进行关联链接。

关键词 : 英语实体链接;上下文信息;排序学习;ListNet排序算法;实体聚类

NLP实体链接

行为准则

假设现在我们处于写作业的状态而且我们以前并没有尝试过写作业时看电视, 所以现在我们有两种选择 , 1, 继续写作业, 2, 跑去看电视. 因为以前没有被罚过, 所以我选看电视, 然后现在的状态变成了看电视, 我又选了 继续看电视, 接着我还是看电视, 最后爸妈回家, 发现我没写完作业就去看电视了, 狠狠地惩罚了我一次, 我也深刻地记下了这一次经历, 并在我的脑海中将 “没写完作业就看电视” 这种行为更改为负面行为, Q learning 根据很多这样的经历是如何来决策的吧.

强化学习

基于上下文词向量和主题模型的实体消歧方法

摘要

传统词向量训练模型仅考虑词共现而未考虑词序,语义表达能力弱。此外,现有实体消歧方法没有考虑实体的局部特征。综合实体的全局特征和局部特征,该文提出一种基于上下文词向量和主题模型的实体消歧方法。首先在传统词向量模型上增加上下文方向向量,用于表征语序,并利用该模型与主题模型训练主题词向量;其次,分别计算实体上下文相似度、基于实体上下文主题的类别主题相似度以及基于主题词向量的实体主题相似度;最后,融合三种相似度,选择相似度最高的实体作为最终消歧实体。

关键词:上下文词向量;实体消歧;知识库;主题词向量;主题模型

NLP实体链接

基于词向量的实体链接方法

Journal of Data Acquisition and Processing  Vol.32 , No.3 ,May 2017 , pp.604-611

摘要

实体链接任务主要包括命名实体识别、查询扩展、候选实体选择、特征抽取和排序,本文针对查询词的扩展,提出一种基于词向量的扩展方法,利用连续词袋(CBOW)模型训练语料中词语的词向量,然后将距离查询词近的词作为扩展词。词向量从语料中挖掘出词与词之间的语义相关性是对基于规则的查询扩展方法的补充,以此来召回候选实体。在特征抽取时,把文档之间的潜在狄利克雷分布(LDA)的主题相似性作为特征之一。在计算文档相似性时,不再以高频词作为向量的维度,而是以基于词向量的相关词作为向量维度,由此得到文档的语义相似特征。最后利用基于单文档方法的排序学习模型把查询词链接到相应的候选实体。实验结果 $F1$ 值达到0.71

NLP实体链接

【目的】:已有线路推荐研究较少考虑地名实体之间的次序,为此设计了基于城市地名实体双向链接分析的路线推荐方法

【方法】:以特定场景下不同地名实体形成的有向加权网络为基础数据源,循环计算不同轨迹链隶属于各个地名实体对应理想集的链入和链出值,进而在通过布尔逻辑和位置限定运算符表达用户查询需求的基础之上,融合模糊检索算法,实现用户查询与轨迹链的精准匹配。

【结果】:这篇提出的算法推荐准确率为0.75,高于TF-IDF推荐算法和不考虑地名实体次序的推荐算法,但召回率无优势,随着加权网络规模的增大,推荐准确率与召回率呈现明显的反向关系。

【局限】:未考虑对象属性数据对推荐结果的影响。

【结论】:本文方法融合了基于统计分析与语义分析的推荐算法,可快速生成备选路线及推荐指数。

NLP实体链接

Description:

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,

return [0, 1].

Discuss:

1.暴力法:

时间复杂度: O(n^2)

空间复杂度: O(1)

class Solution {
    public int[] twoSum(int[] nums, int target) {
        int res[] = {0,0};
        for (int i = 0;i<nums.length;++i){
            for (int j = i+1;j<nums.length;++j){
                if (target == (nums[i] + nums[j])){
                    res[0] = i;
                    res[1] = j;
                    }
                }
            }
        return res;
    }
}
class Solution {
    public int[] twoSum(int[] nums, int target) {
        for (int i = 0;i<nums.length;++i){
            for (int j = i+1;j<nums.length;++j){
                if (target == (nums[i] + nums[j]))
                    return new int[]{i,j};
            }
        }
        return null;
    }
}

2.Hash表

时间复杂度: O(n)

空间复杂度: O(n)

思路:利用哈希表将数组中的值依次存入,并且在数组遍历过程中找到另一个值

class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer  map = new HashMap< ();
            for (int i = 0; i < nums.length; i++){
                if(map.containsKey(target - nums[i])){
                    int[] r = new int[]{map.get(target - nums[i]), i} ;
                    return r;
                }else{
                map.put(nums[i], i);    
            }
        }
        return null;        
    }
}
leetcode

Siamese Network 是一种神经网络的框架,而不是具体的某种网络,Siamese Network用于评估两个输入样本的相似度。网络的框架如下图所示

NLPpython

1.查看创建好的环境:

conda info --envs

2.激活/进入环境

activate env_name
anaconda