使用TensorFlow提取包含数字的元数据

我对机器学习/深度学习是新手,但我在寻找一种从文本中提取元数据的方法,我认为机器学习可能是好的解决方案。

目标

输入:包含字段描述符和值/值的句子,例如:

“非流动资产 5 675 5 512 4 789 4 586”

“现金及现金等价物 909 861 912 630”

“存货、贸易和其他应收款及其他流动资产 3 756 2 998 2 864 2 834”

“总资产 10 340 9 372 8 565 8 051”

“权益 5 649 4 560 2 365 1 969”

“非流动负债 2 438 2 403 3 270 2 407”

“流动负债 2 253 2 409 2 931 3 675”

我做了一些研究,知道这些词需要嵌入(使用Word2Vec或类似的东西)。但是,数字如何处理呢?

输出:元组 {字段: 值}

{non_current_assets: 5675}

{cash_and_cash_equivalents: 909}

{total_assets: 10340}

{equity: 5649}

{non_current_liabilities: 2438}

{current_liabilities: 3756}

{inventories: 3756}

问题

  1. 是否可以使用机器学习解决?如果可以:
    1. 我应该如何格式化输入数据?
    2. 哪种算法最适合此任务?

回答:

你的问题不太清楚。

如果你只有包含文本然后是数字的字符串,并且你想要 {text: number},你应该只需根据整数字符进行分割,而不需要使用机器学习。如果你的字符串包含在更完整的文本文档中,那么提供一个完整的示例会更容易理解。

如果你的句子在一个文本中,比如说:

text = " 如果你的导入因为缺少包而失败,你可以使用pip。非流动资产 5 675 5 512 4 789 4 586。我们还预计现金等价物 909 861 912 630 总计"

你可以使用词性标注和分块来检测数字前的名词组:

就像这个:https://medium.com/@acrosson/extracting-names-emails-and-phone-numbers-5d576354baa

import nltkfrom nltk.corpus import stopwordsnltk.download('stopwords')nltk.download('punkt')stop = stopwords.words('english')document = ' '.join([i for i in text.split() if i not in stop])sentences = nltk.sent_tokenize(document)sentences = [nltk.word_tokenize(sent) for sent in sentences]nltk.download('averaged_perceptron_tagger')sentences = [nltk.pos_tag(sent) for sent in sentences]

然后sentences是:

[[('如果', 'IN'),  ('导入', 'NN'),  ('因为', 'VBG'),  ('缺少', 'JJ'),  ('包', 'VBG'),  ('而', 'NN'),  (',', ','),  ('使用', 'NN'),  ('pip', 'NN'),  ('.', '.')],[('非流动', 'JJ'),  ('资产', 'NNS'),  ('5', 'CD'),  ('675', 'CD'),  ('5', 'CD'),  ('512', 'CD'),  ('4', 'CD'),  ('789', 'CD'),  ('4', 'CD'),  ('586', 'CD'),  ('.', '.')],[('我们', 'PRP'),  ('还', 'RB'),  ('预计', 'VBP'),  ('现金', 'NN'),  ('等价物', 'NNS'),  ('909', 'CD'),  ('861', 'CD'),  ('912', 'CD'),  ('630', 'CD'),  ('总计', 'NN')]]

你可以根据语法定义正则表达式来检测数字前的名词组,比如:

grammar = """MATCH:{<JJ><NNS><CD>}""" #语法需要完成cp = nltk.RegexpParser(grammar)for sentence in sentences:  print(cp.parse(sentence))

这将返回:

(S  如果/IN  导入/NN  因为/VBG  缺少/JJ  包/VBG  而/NN  ,/,  使用/NN  pip/NN  ./.)(S  (MATCH 非流动/JJ 资产/NNS 5/CD)  675/CD  5/CD  512/CD  4/CD  789/CD  4/CD  586/CD  ./.)(S  我们/PRP  还/RB  预计/VBP  现金/NN  等价物/NNS  909/CD  861/CD  912/CD  630/CD  总计/NN)

我认为,如果你不是专家的话,从头开始使用TensorFlow来做这件事会困难得多

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注