我需要处理大量文本数据,并尝试从每个文档中提取给定的一组字段,这些字段最终将存储在数据库中。
例如:
Left floor, 3rd floor, door B, block X, portal 1, PLOT M-18.A,
AREA 2, U.U. 4 in ADDRESS HIDDEN , nº NUMBER,
ADDRESS HIDDEN, 1, 3rd XXXXX.,
in CITY.
这些字段是:
Street type, Address, City, block number, floor number...
对于具有更多结构的其他类型的文档,对于每个字段,我都使用lightGBM模型对所有字段实现了80%以上的准确性,但是对于上述类型的文档,我却失败了。我认为我需要某种模型来将该字段检测为实体。
我隐藏了敏感信息。从上面的内容中,我需要为我要检测的每个字段训练一组模型。现在我有针对每个领域训练的LightGBM模型,并且我已经微调了每个领域的目标变量以帮助训练模型,例如
master['target_ADDRESS'] = 0
master.loc[
(master['entity_length'] <= 8) &
(master['entity_start_ix'] <= 80) &
(master['left_context'].str.lower().str.contains('(a|del|de la| sitio de( la)?) %s' % stree_type)) &
(
(master['left_context'].str.lower().str.endswith(street_type)) |
(master['left_context'].str.lower().str.endswith(('%s de' % x for x in street_type )))
) &
(master['entity_content'].str.contains(street_type, case=False) == False),
'target_ADDRESS'] = 1
但是现在我被困住了,因为每个文档遵循不同的结构。我没有什么尝试的想法。我认为也许word2vec
模型会有所帮助,但是按照本指南https://www.tensorflow.org/tutorials/representation/word2vec看来,word2vec
最适合预测给定句子的下一个word
。
我也尝试过使用openvenues/libpostal,但是只有在您将地址作为输入传递时它才起作用,它不会检测文本中的地址。
我还研究了如CoreNLP中所述训练custom NER model的可能性,但由于所需的数据量,我认为这是不可能的。
您能给我一些建议,以解决该问题的方法吗?
注意:文档为西班牙语