NLP:比较分析和标记的句子

NLP:比较分析和标记的句子,nlp,nltk,Nlp,Nltk,你好,语言程序员 我正在学习在线自然语言处理,到目前为止,我对如何解析一个句子有一些理解,包括获取它的词性标记、SRL等等。 我的问题是如何处理这些数据,或者更准确地说,如何比较两个不同的解析句子,看看它们有多相似 例如,我得到了这两个经过分析的句子,我想能够比较它们 1. <sentence id="s0" parse_status="success" fom="11.6633"> <cons id="c0" cat="NP" xcat="" head="c1" sem_he

你好,语言程序员

我正在学习在线自然语言处理,到目前为止,我对如何解析一个句子有一些理解,包括获取它的词性标记、SRL等等。 我的问题是如何处理这些数据,或者更准确地说,如何比较两个不同的解析句子,看看它们有多相似

例如,我得到了这两个经过分析的句子,我想能够比较它们

1.

<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>
<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.

<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>
<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>

公寓
具有
3.
房间
在里面
电话
阿维夫

谢谢

张和沙沙的指标可能就是你想要的。此度量用于计算nlp语法树中两棵树之间的长度。您可以查看或搜索“编辑树与相关问题之间距离的简单快速算法”原始出版物。

我假设您希望查找分类句子并合并类似的句子

您可以通过多种方式来实现这一点

  • 对标记的句子使用朴素贝叶斯进行分类(假设您有一些训练数据和数量有限的句子类别)

  • 使用线性回归进行类似的过程。包括标记和标记之间的距离作为特征

  • 如果你想使用无监督的统计方法,可以使用K-means或类似的技术

  • 使用语言过滤模型对标记句进行过滤。(简单地说:陈述/疑问或主动/被动等)


  • 坦率地说,有很多方法可以解决这个问题。这个问题还没有完全解决。但是因为你提到你正在学习NLP,我建议你从这些方法开始。

    你真的可以决定一个相似性度量。就这个问题而言,我很想把暂停作为没有展示对问题定义的基本理解的标志。