在keras tokenizer中包含标点符号

时间:2018-03-02 16:49:38

标签: keras tokenize

有没有办法在 keras tokenizer 中包含标点符号?
我想进行转型......

Tomorrow will be cold.

TO

Index-tomorrow, Index-will,...,Index-point

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:4)

如果您对文本进行一些预处理,则可以这样做。

首先,您要确保标记符未过滤掉标点符号。您可以从文档中看到Tokenizer在初始化时采用过滤器参数。您可以使用要过滤的字符集替换默认值,并排除索引中要包含的字符。

第二部分是确保将标点符号识别为自己的标记。如果您对例句进行标记,结果将会“冷”。作为代币而不是“冷”和“。”。你需要的是单词和标点符号之间的分隔符。一种天真的方法是用空格+标点符号替换文本中的标点符号。

以下代码执行您的要求:

from keras.preprocessing.text import Tokenizer

t = Tokenizer(filters='!"#$%&()*+,-/:;<=>?@[\\]^_`{|}~\t\n') # all without .
text = "Tomorrow will be cold."
text = text.replace(".", " .")
t.fit_on_texts([text])
print(t.word_index)

- &GT;打印:{'将':2,'是':3,'冷':4,'明天':1,'。':5}

替换逻辑可以以更智能的方式完成(例如,如果你想捕获所有标点符号,则使用正则表达式),但是你得到了要点。

答案 1 :(得分:1)

一种受lmartens提议的解决方案启发的通用解决方案,它使用Regex表达式替换一组标点符号。这里的代码:

TID  Customer   PRODUCT     VAL1        VAL2        VAL3        VAL4
1    CUST       A           CONTENT1    CONTENT2    CONTENT3    CONTENT4  
1    CUST       B           CONTENT1    CONTENT2    CONTENT3    CONTENT4  
1    CUST       C           CONTENT1    CONTENT2    CONTENT3    CONTENT4  
1    CUST       D           CONTENT1    CONTENT2    CONTENT3    CONTENT4  
1    CUST       E           CONTENT1    CONTENT2    CONTENT3    CONTENT4  


EDIT: