如何在 R 中从大型和复杂的 XML 文件中提取单个句子

How do I extract individual sentences from large and complex XML files in R

提问人:Pied Pipetter 提问时间:2/20/2023 更新时间:2/20/2023 访问量:49

问:

我正在解析 FDA 药品标签,这些标签可通过 https://dailymed.nlm.nih.gov/dailymed/services/v2/spls/ 的 API 从 DailyMed 访问。

XML 中的示例标签如下:https://dailymed.nlm.nih.gov/dailymed/services/v2/spls/2d04c305-70d6-4a99-8c82-720c5398a46c.xml

我在 R 中的任务是在数千个这样的药品标签中找到某些关键字,并提取关键字周围的文本以进行进一步处理。如果我能得到包含关键字的单个句子,那将是理想的。

到目前为止,我的方法是将路径用于更高级别的感兴趣节点,并使用 xml_text()) 抓取文本。然后使用 str_split() 创建句子列表。

chunk_of_text <- xml_text()

list_of_sentences <- str_split(chunk_of_text, pattern=boundary(“句子”)

这很有效,除非句子之间的空格为零(例如,“句子一句子二”或“句子一。第二句。出现这种缺少空格问题的原因是 xml_text() 连接了所有内容,并且在部分标题、段落等之后经常缺少空格。我试过搜索“\.”并在str_split()之前替换为“\.”,但这会用小数点打破数字。

我看到的另一个选择是在不使用 xml_read() 的情况下解析 XML,以避免将所有文本组合在一起的串联。

这些 XML 标签确实具有预期的语法,但不同标签的语法不同。从字面上看,我必须寻找特定的标签才能接近,但关键字可能位于其下方的 XML 大块中的任何位置。

有没有办法从路径开始,并将该路径中的所有文本提取到列表或结构或单个字符串(用空格分隔)中?我不需要提取结构,甚至不需要理解它 - 我只需要单个句子中的所有文本(或标题短语等),然后我就可以对每个句子进行关键字搜索。

谢谢!

r xml xml 解析

评论

0赞 I_O 2/20/2023
这可能是一个有用的样板(将 XML 转换为 DataFrame): stackoverflow.com/a/33447328/20513099
0赞 SamR 2/20/2023
这看起来可行。您能否发布当前代码的最小可运行示例、您获得的输出以及您希望的输出是什么?
0赞 LMC 2/21/2023
Xpath 可用于定位特定节点,而不是编写文本解析器//subject/manufacturedProduct/manufacturedProduct/name[.="someName"]
0赞 Pied Pipetter 2/24/2023
感谢您的意见和建议。我正在尝试探索上面链接中的内容,然后重试。我可以发布我的代码,但老实说,我认为这无济于事。到目前为止,我所拥有的解决方案可能不是正确的方法,我需要备份和评估如何以与我不同的方式进行抓取。再次感谢。

答: 暂无答案