【问题标题】:Extracting information from text in python从python中的文本中提取信息
【发布时间】:2018-09-02 05:25:42
【问题描述】:

我是文本挖掘的新手。我有一个 CSV 文件。我需要遍历每一行并提取一些信息,然后将它们写入另一个 CSV 文件。我正在查找我在字典中的特定信息。考虑下面的句子:

“应用程序版本为1.8.2,变量skt.len传递所需信息。文件ReadMe.txt有规范。”

我的字典是:[“应用程序版本”、“变量”、“文件”]

我需要提取:

  • 应用版本:1.8.2
  • 变量:skt.len
  • 文件:ReadMe.txt

从文本中提取此类信息的最佳方法是什么?我正在使用 NLTK 和 StanfordCoreNLP 功能。但是,我还无法提取信息。我正在考虑使用正则表达式来提取应用程序版本。有什么想法吗?

PS:我知道这可能会使任务更加复杂。但是,CSV 文件的每一行中的句子可能具有不同的结构。例如:“应用程序版本”在一行中,可能是“应用程序版本”在另一行。或者一行中的“文件”可能是另一行中的“文件名”。

【问题讨论】:

  • 请向我们展示一些示例输入和所需的输出。
  • 欢迎来到 Stack Overflow!请使用tour 并通读help center,尤其是[how-to-ask] 您最好的选择是进行研究,搜索有关SO 的相关主题,然后试一试。如果您在进行更多研究和搜索后卡住并且无法解开,请发布您的尝试minimal reproducible example,并具体说明您卡在哪里。你可以使用熊猫。还有很多其他可以读取和写入 csv 的 python 包。上一个关于 panadas 和 NLTK 的问题stackoverflow.com/questions/34784004/…
  • 例如:Internet Explorer 3.x 和 4.x 以及 Netscape 2.x、3.x 和 4.x 中的 JavaScript。
  • 输入是存储在 CSV 文件中的文本字符串。例如:“Internet Explorer 3.x 和 4.x 中的 JavaScript”,我们需要提取一些信息,例如应用程序版本、任何文件名、文本中存在的变量名。这些关键字 ["application version", "variable", "file"] 可以在输入中显式或隐式提及。在此示例中,3.x 和 4.x 是作为应用程序版本的输出。该程序应该能够检测到它们并提取它们。它可以与 POS 树一起工作,并且只关注解析树的 NP(名词短语)来提取这些信息。
  • 您可以使用正则表达式在特定文本匹配后获得所需的值,即版本或变量。

标签: python nlp nltk text-mining information-extraction


【解决方案1】:

我使用 R 和以下是提取变量值的方法之一(不是最好的,只是为了展示它是如何工作的):

>> str_extract(text, '(?<=variable\\s)(\\w+)(.)?(\\w+)?')

这里的文本是您共享的整个字符串。这给了我一个输出

>> skt.len

我确信 Python 中有类似的函数可以完成这项工作并获得所需格式的输出。

【讨论】:

  • 谢谢。但这项任务比使用正则表达式更复杂。由于我们有非结构化数据,我们不知道每个描述是如何的。程序应该明白,例如在下面的描述中,myBloggie 是应用程序名称,2.1.6 是它的版本。我可以通过 REGEX 处理版本号,但它不适用于我需要提取的其他信息。示例:“myBloggie 2.1.6 及更早版本中的多个 SQL 注入漏洞允许远程攻击者通过 viewuser 操作中 index.php 的 (1) cat_id 或 (2) year 参数执行任意 SQL 命令”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多