我有大量(〜50k)术语表,这些关键字词/术语中有许多都有相应的缩写词/缩写。我需要一种快速的方法来查找缩写或扩展缩写(即MS-> Microsoft),然后用完整的扩展缩写+缩写(即Microsoft-> Microsoft(MS)或MS-> Microsoft(MS))替换它。

我是spaCy的新手,因此我的幼稚方法是使用spacy_lookup并同时使用缩写和扩展缩写作为关键字,然后使用某种pipeline extension进行匹配,然后将其替换为完整的扩展缩写+缩写。

在spaCy中是否有更好的标记和解析首字母缩略词/缩写的方法?

最佳答案

在GitHub上 checkout scispacy,它实现了this paper中描述的首字母缩写识别启发式(另请参见here)。如果首字母缩略词在文本中以类似的方式“引入”,则启发式方法会起作用



这样,一种可行的方法是用长格式替换一段文本中的所有首字母缩写词

import spacy
from scispacy.abbreviation import AbbreviationDetector

nlp = spacy.load("en_core_web_sm")

abbreviation_pipe = AbbreviationDetector(nlp)
nlp.add_pipe(abbreviation_pipe)

text = "StackOverflow (SO) is a question and answer site for professional and enthusiast programmers. SO rocks!"

def replace_acronyms(text):
    doc = nlp(text)
    altered_tok = [tok.text for tok in doc]
    for abrv in doc._.abbreviations:
        altered_tok[abrv.start] = str(abrv._.long_form)

    return(" ".join(altered_tok))

replace_acronyms(text)

关于python-3.x - 如何识别缩写/缩略语并在spaCy中进行扩展?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52570805/

10-13 07:54