首页 > 解决方案 > 标记化:如何在用于 NLP 的 python 中不标记标点符号,如 `^*

问题描述

我想标记除 `*^ 之外的字符串标点符号

我试过但结果,所有类型的标点符号都是分开的,而对于某些标点符号我不想分开

当我使用:

text = "hai*ini^ema`il saya lunar!?"
tokenizer = TweetTokenizer()
nltk_tokens = tokenizer.tokenize(text)
nltk_tokens

我得到:

['hai', '*', 'ini', '^', 'ema', '`', 'il', 'saya', 'lunar', '!', '?']

我想要的是:

['hai*ini^ema`il', 'saya', 'lunar', '!', '?']

我想标记但不标记 *^`

标签: pythonjupyter-notebooknlpnltktokenize

解决方案


尝试这个:

def phrasalize(tokens):
    s = " ".join(tokens)
    match = re.match("((\w*\s[\*\^\`]\s\w*)+)", s)
    while match:
        s = s.replace(match.group(1), match.group(1).replace(' ', ''))
        match = re.match("((\w*\s[\*\^\`]\s\w*)+)", s)
    return s

tokens = ['hai', '*', 'ini', '^', 'ema', '`', 'il', 'saya', 'lunar', '!', '?']
phrasalize(tokens)

[出去]:

'hai*ini^ema`il saya lunar ! ?'

推荐阅读