之前遐想的中文语义分析
1.中文短句结构简述
主语:指明说的是什么人或什么事
谓语:指明主语”是什么”或”怎么样”
宾语:跟在动词后,表示动作,行为涉及到的人或事物.
定语:名词前面连带成分,用来修饰,名词表示人或者事物性质,状态,数量,所属.
状语:动词前面连带成分,表示动作的状态,方式,时间,处所或程度.
补语:动词或者形容词后面的连带成分,表示动作的情况,结果,程度,趋向,时间,处所,数量,形状等.
独立成分:不与其他成分产生结构关系,但意义上是全局必需,表示对事物的推测,估计,补充,感叹等语气.
复指成分,用两个或者两个以上短语指同一个事物,作为同一个句子成分.
Ex:
[修饰全句的状语]+(定)主+[状]谓<动补>+(定)宾+<宾补>
[每当有外地人来],(好客的)天津人[总是][眉飞色舞地]谈<起了>(天津的)小吃<有多么地道>
2.分析目标
我们只分析一句话有用没用,而不去分析这句话对目标对象是好是坏.比如一个评价,它从语义上来看对这个商品来说是相当差的评价,但是经过我们分析那么可能会被判定有实用性的评价,相反一条评价对于商品来说是一条极好的评价,也可能会被我们判定实用性差的评价.
3.总体步骤
整句话用常见中文句子分隔符”,””.””!”分割,形成分句map<sentence, score>, key表示分句,score表示分句分数评定.
检测sentence map短句相似性(暂时进行简单的短句字符重复匹配).80%以上句子相似判定 整条数据为 0(满分255)实用性.
逐个分句进行分析.按照中文句子正常成分分析,按如下模式(或者更加多的模式)切割,填充到Map<classify,term>,classify表示词语的性质(主(subject),谓(predicate),宾(object),定(attribute),补(complement)),term表示词汇本身. 每个classify在整个分句的评分中有一定比重.
[修饰全句的状语]+(定)主+[状]谓<动补>+(定)宾+<宾补>
逐一对termMap中的term进行鉴定. 5种词汇评价方式不一样:
(1)主语主要判定与业务实体的关联性(比如评价主要按购买的物品,买家,卖家的关联性优先级高到低评定)
(2)谓语主要判定对业务实体进行动作的关联性(比如评价主要按使用,观察等优先级由高到底评定).
(3)定语和状语主要给谓语或者宾语分数进行放大作用
(4)宾语主要判定与业务实体的关联性(比如评价主要按购买的物品以及物品相关的配件, 卖家用户信息,买家用户信息的关联性优先级高到低评定)
将所有classify term的分数按比重相加(谓词和宾语需要乘上状语和定语的放大系数),成为一个短句的分数.填充到sentence map.
所有sentence map中短句分数相加. 即为整个句子的评分.
4.判定核心原理
顺序遍历每种句式,将原始文本的词汇在每种句式上的位置进行标识.也就是进行初步的词汇判定.
其中一种句式如下
[修饰全句的状语]+(定)主+[状]谓<动补>+(定)宾+<宾补>
对[主,谓,宾,定,补]每种类型建立词库.上诉已经产生几种句式的词汇类型映射. 然后逐一验证每个句式类型映射的词是否在对应类型的词库中.
最终选取匹配度最高的句式作为词汇映射结果.
5.整体结构
(1)SplitorTask:使用中文分词器进行切分.
输入 原始文本,
输出 CompleteSentence(List<PartSentence(part_sentence ,score)>,score),原始score为0
(2)SentenceDupCheckTask:对分句进行排重.
输入 CompleteSentence(List<PartSentence(part_sentence ,score)>,score)
输出 CompleteSentence(List<PartSentence(part_sentence ,score)>,score)
(3)TermAanalyerTask:进行分词 classify.
输入 CompleteSentence(List<PartSentence(part_sentence ,score)>,score)
输出 CompleteSentence(map< PartSentence,DetailTerm(term,classify,score)>,score)
(4)TermEvaluateTask:进行term的评分.
输入 CompleteSentence(map< PartSentence,DetailTerm(term,classify,score)>,score)
对象(score为0),
输出 CompleteSentence(map< PartSentence,DetailTerm(term,classify,score)>,score)
DetailTerm对象(已评分)
(5)SentenceEvaluateTask:进行综合评定
输入 CompleteSentence(map< PartSentence,DetailTerm(term,classify,score)>,score)
DetailTerm对象(已评分)
输出 CompleteSentence(map< PartSentence,DetailTerm(term,classify,score)>,score)
CompleteSentence对象(已评分)