我有大量(〜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/