2013-08-04 35 views
-1

你好语言程序员NLP:比较分析,并标记句子

我学习网上自然语言处理,到目前为止,我对如何解析包括获取它的POS标签,SRL等句子一定的了解。 我的问题是如何处理这些数据,或者更确切地说,如何比较两个不同的解析句子来查看它们的相似程度。

例如我得到这个拖解析句子,我希望能够给他们

<sentence id="s0" parse_status="success" fom="11.6633"> 
<cons id="c0" cat="NP" xcat="" head="c1" sem_head="c1" schema="empty_spec_head"> 
<cons id="c1" cat="NX" xcat="" head="c2" sem_head="c2" schema="head_mod"> 
<cons id="c2" cat="NX" xcat="" head="c3" sem_head="c3" schema="head_mod"> 
<cons id="c3" cat="NX" xcat="" head="t0" sem_head="t0"> 
<tok id="t0" cat="N" pos="NN" base="apartment" lexentry="[D<N.3sg>]" pred="noun_arg0">apartment</tok> 
</cons> 
<cons id="c4" cat="PP" xcat="" head="c5" sem_head="c5" schema="head_comp"> 
<cons id="c5" cat="PX" xcat="" head="t1" sem_head="t1"> 
<tok id="t1" cat="P" pos="IN" base="in" lexentry="N[<P>NP.acc]" pred="prep_arg12" type="noun_mod" arg1="c3" arg2="c6">in</tok> 
</cons> 
<cons id="c6" cat="NP" xcat="" head="c7" sem_head="c7" schema="empty_spec_head"> 
<cons id="c7" cat="NX" xcat="" head="c9" sem_head="c9" schema="mod_head"> 
<cons id="c8" cat="NP" xcat="" head="t2" sem_head="t2"> 
<tok id="t2" cat="N" pos="NNP" base="tel" lexentry="[D<N.3sg>]-noun_adjective_rule" pred="noun_arg1" type="noun_mod" arg1="c9">Tel</tok> 
</cons> 
<cons id="c9" cat="NX" xcat="" head="t3" sem_head="t3"> 
<tok id="t3" cat="N" pos="NNP" base="aviv" lexentry="[D<N.3sg>]" pred="noun_arg0">Aviv</tok> 
</cons> 
</cons> 
</cons> 
</cons> 
</cons> 
<cons id="c10" cat="PP" xcat="" head="c11" sem_head="c11" schema="head_comp"> 
<cons id="c11" cat="PX" xcat="" head="t4" sem_head="t4"> 
<tok id="t4" cat="P" pos="IN" base="with" lexentry="N[<P>NP.acc]" pred="prep_arg12" type="noun_mod" arg1="c2" arg2="c12">with</tok> 
</cons> 
<cons id="c12" cat="NP" xcat="" head="c13" sem_head="c13" schema="empty_spec_head"> 
<cons id="c13" cat="NX" xcat="" head="c15" sem_head="c15" schema="mod_head"> 
<cons id="c14" cat="ADJP" xcat="" head="t5" sem_head="t5"> 
<tok id="t5" cat="ADJ" pos="CD" base="five" lexentry="[<ADJP>]N" pred="adj_arg1" type="noun_mod" arg1="c15">five</tok> 
</cons> 
<cons id="c15" cat="NX" xcat="" head="t6" sem_head="t6"> 
<tok id="t6" cat="N" pos="NNS" base="room" lexentry="[D<N.3sg>]-plural_noun_rule" pred="noun_arg0">rooms</tok> 
</cons> 
</cons> 
</cons> 
</cons> 
</cons> 
</cons> 
</sentence> 

2.

<sentence id="s1" parse_status="success" fom="17.4367"> 
<cons id="c16" cat="NP" xcat="" head="c17" sem_head="c17" schema="empty_spec_head"> 
<cons id="c17" cat="NX" xcat="" head="c18" sem_head="c18" schema="head_mod"> 
<cons id="c18" cat="NX" xcat="" head="t7" sem_head="t7"> 
<tok id="t7" cat="N" pos="NN" base="apartment" lexentry="[D<N.3sg>]" pred="noun_arg0">apartment</tok> 
</cons> 
<cons id="c19" cat="PP" xcat="" head="c20" sem_head="c20" schema="head_comp"> 
<cons id="c20" cat="PX" xcat="" head="t8" sem_head="t8"> 
<tok id="t8" cat="P" pos="IN" base="with" lexentry="N[<P>NP.acc]" pred="prep_arg12" type="noun_mod" arg1="c18" arg2="c21">with</tok> 
</cons> 
<cons id="c21" cat="NP" xcat="" head="c22" sem_head="c22" schema="empty_spec_head"> 
<cons id="c22" cat="NX" xcat="" head="c23" sem_head="c23" schema="head_mod"> 
<cons id="c23" cat="NX" xcat="" head="c25" sem_head="c25" schema="mod_head"> 
<cons id="c24" cat="ADJP" xcat="" head="t9" sem_head="t9"> 
<tok id="t9" cat="ADJ" pos="CD" base="-NUMBER-" lexentry="[<ADJP>]N" pred="adj_arg1" type="noun_mod" arg1="c25">3</tok> 
</cons> 
<cons id="c25" cat="NX" xcat="" head="t10" sem_head="t10"> 
<tok id="t10" cat="N" pos="NNS" base="room" lexentry="[D<N.3sg>]-plural_noun_rule" pred="noun_arg0">rooms</tok> 
</cons> 
</cons> 
<cons id="c26" cat="PP" xcat="" head="c27" sem_head="c27" schema="head_comp"> 
<cons id="c27" cat="PX" xcat="" head="t11" sem_head="t11"> 
<tok id="t11" cat="P" pos="IN" base="in" lexentry="N[<P>NP.acc]" pred="prep_arg12" type="noun_mod" arg1="c23" arg2="c28">in</tok> 
</cons> 
<cons id="c28" cat="NP" xcat="" head="c29" sem_head="c29" schema="empty_spec_head"> 
<cons id="c29" cat="NX" xcat="" head="c31" sem_head="c31" schema="mod_head"> 
<cons id="c30" cat="NP" xcat="" head="t12" sem_head="t12"> 
<tok id="t12" cat="N" pos="NNP" base="tel" lexentry="[D<N.3sg>]-noun_adjective_rule" pred="noun_arg1" type="noun_mod" arg1="c31">Tel</tok> 
</cons> 
<cons id="c31" cat="NX" xcat="" head="t13" sem_head="t13"> 
<tok id="t13" cat="N" pos="NNP" base="aviv" lexentry="[D<N.3sg>]" pred="noun_arg0">Aviv</tok> 
</cons> 
</cons> 
</cons> 
</cons> 
</cons> 
</cons> 
</cons> 
</cons> 
</cons> 
</sentence> 

由于比较

+2

这是真的由你来决定一个相似性度量。正如这个问题所表明的那样,我很想标志着搁置,因为没有展示对问题定义的基本理解。 – tripleee

回答

0

张和shasha指标可能是你正在寻找的。该度量计算nlp语法树中两棵树之间的长度。您可以查看here(in french),或搜索“用于编辑树和相关问题之间的距离的简单快速算法”原始出版物。

0

我假设你想找到分类句子和俱乐部类似的。

你可以通过多种方式来解决这个问题。

  1. 在带标记的句子上使用朴素贝叶斯对它们进行分类(假设您有一些训练数据和有限数量的句子类别)。

  2. 使用线性回归来做类似的过程。在标签之间加入标签和距离作为特征。

  3. 如果您需要统计无监督方法,请使用K-means或类似技术。

  4. 使用语言过滤器模型将标记的句子通过不同的过滤器。 (就像:陈述/疑问或主动/被动等等)。

坦率地说,解决这个问题有很多种方法。它仍然没有完全解决。但是因为你提到你正在学习NLP,所以我建议你从这些方法入手。