0

我正在使用神经核来解决文本中的共指解析任务。

我想知道每个句子都提到了哪些共指集群。例如,sentence1 有来自共指集群 1 和 4 的提及;第 2 句提到了来自共指集群 10 、 14 的内容。

我怎样才能做到这一点?

4

1 回答 1

0

您可以尝试遍历每个句子中的单词并填充句子词典 -> 如果该单词是集群的一部分,则该集群。它假设跨度是一个单词,您可以尝试将其扩展到多个单词(bi-grams 或 tri-grams),以防您想要处理键是多单词的集群。

import spacy
import neuralcoref

nlp = spacy.load('en')
neuralcoref.add_to_pipe(nlp)

doc = nlp('Angela lives in Boston. She is Happy. Nikki is her new friend. She is jolly too.')
print('*** cluster : tokens mapping ***')
print(doc._.coref_clusters)

mapping = {}
for sent in doc.sents:
    mapping[sent] = set()

    for idx in range(1, len(sent)):
        span = sent[idx-1:idx]    # edit this to handle n-grams
        if span._.is_coref:        
            key = span._.coref_cluster.main               
            mapping[sent].add(key) 

  
    
print('*** sentence : clusters mapping ***')
print(mapping)  

输出如下所示:

*** cluster : tokens mapping ***
[Angela: [Angela, She, her], Nikki: [Nikki, She]]

*** sentence : clusters mapping ***
{Angela lives in Boston.: {Angela}, She is Happy.: {Angela}, Nikki is her new friend.: {Nikki, Angela}, She is jolly too.: {Nikki}}
于 2020-08-18T07:17:11.023 回答