【问题标题】:How can I add custom signs to spaCy's punctuation functionality?如何将自定义符号添加到 spaCy 的标点符号功能?
【发布时间】:2019-05-07 22:06:51
【问题描述】:

是否有任何选项可以添加自定义标点符号,默认标点符号规则中不包含这些标点符号? (https://github.com/explosion/spaCy/blob/develop/spacy/lang/de/punctuation.py)

我正在使用 spaCy 的 Matcher 类 (https://spacy.io/usage/rule-based-matching) 和属性“IS_PUNCT”从我的文本中删除标点符号。

from spacy.matcher import Matcher

# instantiate Matcher
matcher = Matcher(nlp.vocab)

# define pattern
pattern = [{"IS_PUNCT": False}]

# add pattern to matcher
matcher.add("Cleaning", None, pattern)

我想自定义标点规则以删除“|”来自我与 Matcher 的文本。

【问题讨论】:

    标签: python nlp spacy


    【解决方案1】:

    您可以通过将lex_attr_getters[IS_PUNCT] 函数替换为包含描述附加字符的符号列表的自定义函数来实现此目的。

    import spacy
    from spacy.symbols import IS_PUNCT
    from spacy.lang.en import EnglishDefaults
    
    def is_punct_custom(text):
        extra_punct = ["|"]
        if text in extra_punct:
            return True
        return is_punct_original(text)
    
    # Keep a reference to the original is_punct function
    is_punct_original = EnglishDefaults.lex_attr_getters[IS_PUNCT]
    # Assign a new function for IS_PUNCT
    EnglishDefaults.lex_attr_getters[IS_PUNCT] = is_punct_custom
    

    【讨论】:

    • 已确认。这确实有效!只需确保在加载模型之前修改 EnglishDefaults。
    猜你喜欢
    • 1970-01-01
    • 2012-07-13
    • 2016-05-28
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    • 2016-04-09
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多