有什么方法可以在keras标记程序中包含标点符号?
我想改变一下...
从
Tomorrow will be cold.
Run Code Online (Sandbox Code Playgroud)
至
Index-tomorrow, Index-will,...,Index-point
Run Code Online (Sandbox Code Playgroud)
我该如何实现?
如果对文本进行一些预处理,则可以这样做。
首先,您要确保标点符号未将标点符号过滤掉。您可以从文档中看到Tokenizer在初始化时采用了filter参数。您可以将默认值替换为要过滤的字符集,并排除要包含在索引中的字符。
第二部分是确保将标点符号识别为自己的标记。如果将示例语句标记化,则结果将为“冷”。作为令牌,而不是“冷”和“。”。您需要的是单词和标点之间的分隔符。天真的方法是用空格+标点符号代替文本中的标点符号。
以下代码可以满足您的要求:
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)
Run Code Online (Sandbox Code Playgroud)
->打印:{'will':2,'be':3,'cold':4,4,'明天':1,'。':5}
替换逻辑可以通过一种更智能的方式来完成(例如,如果要捕获所有标点符号,则使用正则表达式),但是您的主旨是。
| 归档时间: |
|
| 查看次数: |
1873 次 |
| 最近记录: |