首页 > 解决方案 > spacy 如何获得带有一些空格异常的单词列表?

问题描述

我正在尝试获取包含单词的列表,但对于某些单词,我希望它们成为单个实体而不是两个单独的实体。

例如,

如果我的文字像

text = '橄榄油是常见的成分之一,甜椒也很常见'

//期望的输出是

['橄榄油','是','一个','的','那个','普通','配料','and','甜椒','是','也''相当', '常见的']

我曾研究过 PhraseMatcher,但phraseMatcher 检测到某个短语作为匹配项,但并没有给我上面想要的最终结果。

如果我可以设置一个类似 [{'POS': 'NOUN'}, {'lower':'oil}] 的逻辑,它可以让我得到任何以 'oil' 结尾的两个组合作为单个元素,例如 ' xxx 油”、“yyy 油”、“abc 油”。

谁能帮我用样品解决这个问题?

谢谢

标签: pythonnlpspacy

解决方案


在这里,假设你有一个应该是名词结尾一部分的所有单词的字典,你可以使用它。我假设较低的意思是单词的结尾。您可以对单词的起始键使用类似的实现。

text = 'olive oil is one of the common ingredients and bell pepper is also quite common'

word_index = {
    'oil': 'lower',
    'pepper': 'lower'
}

def change_text(some_text):
    process = some_text.split()
    i = 0
    while i<len(process):
        if process[i] in word_index:
            if word_index[process[i]] == 'lower':
                process[i-1:i+1] = [f'{process[i-1]} {process[i]}']
        i+=1
    return process

推荐阅读