【发布时间】:2021-06-24 05:07:14
【问题描述】:
我已经制作了检测字符串值是地址、公司还是日期的 Keras 模型。我只使用了不同的公司名称、不同的日期共振峰和不同的街道地址进行培训。 所以我数据集中的每一行都有 1 到 5 个单词(有些单词可以是数字)。
对于预处理,我使用了矢量化器:
transformerVectoriser = ColumnTransformer(transformers=[('vector char', CountVectorizer(analyzer='char', ngram_range=(3, 6), max_features = 2000), 'text'),
('vector word', CountVectorizer(analyzer='word', ngram_range=(1, 1), max_features = 4000), 'text')],
remainder='passthrough') # Default is to drop untransformed columns
features = transformerVectoriser.fit_transform(features)
这是我的模型:
model = Sequential()
model.add(Dense(100, input_dim = features.shape[1], activation = 'relu')) # input layer requires input_dim param
model.add(Dense(200, activation = 'relu'))
model.add(Dense(100, activation = 'relu'))
model.add(Dense(50, activation = 'relu'))
model.add(Dropout(0.5))
model.add(Dense(3, activation='softmax'))
我已经达到了 93% 的准确率。 是否可以使用该模型来检测较大文本中的字符串(地址、公司或日期)在哪里?我认为这种模型称为NER模型(命名实体识别)。
我的模型接受字符串输入并决定它是公司、个人还是地址。 字符串输入长度为 1-5 个字。
例如,如果我有文字:
text = "What do you think about Amazon and their customer policy?"
如何检测“Amazon”的开始索引和结束索引,或者如何从该文本中仅提取 Amazon? 所以要求的结果应该是:
start_index = 21
end_index = 27
或者:
result = {'company':'Amazon'}
或者例如如果输入是:
"My name is Don John and I work in Amazon Inc."
因此我想要:{"company": "Amazon Inc", "name": "Don John"}
我想使用我的模型从文本中提取特定实体,在本例中为公司、地址或日期。
基本上我需要某种基于 Keras 模型的location search,或者在大文本中搜索模式。
【问题讨论】:
-
你试过什么?您是否正在寻找有关如何重用已训练模型的信息?你的 keras 模型在做什么?它的输入是什么?它的输出是什么?
-
我的模型接受字符串输入并确定它是公司、个人还是地址。字符串输入为 1-5 个字长。我想输入更长的文本,例如 1000 字,并以文本或地址等方式获取公司的位置
-
是什么阻止您输入超过 5 个单词的字符串?有错误吗?
-
我可以添加 100000 个单词的字符串,但结果不会显示或列出该文本中的所有实体/单词/短语。例如,如果我输入句子“我的名字是 Don John,我在 Amazon Inc. 工作”,结果我想要:{"company": Amazon Inc, "name": Don John}
-
你的意思是你训练的模型是一个分类器,输出输入是地址、公司或名称的概率?你想要一种方法将此模型应用于句子中的每个单词/n-gram 吗?