用占位符文本替换 XML 个文件中的文本
Replace Text in XML files with placeholder text
我对现在准备发布的文件进行了文本挖掘。有几个 XML 文件在段中包含文本(请参见下面的基本示例)。由于版权限制,我必须确保我要发布的文件不包含完整的文本,而有文本的人应该能够 'reconstruct' 文件。为了确保仍然可以执行基本的文本挖掘(= 计算长度),段长度不应更改。因此,我正在寻找一种方法,用虚拟/占位符文本替换所有段中除第一个和最后一个单词之外的每个单词。
基本示例:
输入:
<text>
<div>
<seg xml:id="A">Lorem ipsum dolor sit amet</seg>
<seg xml:id="B">sed diam nonumy eirmod tempor invidunt</seg>
</div>
</text>
输出:
<text>
<div>
<seg xml:id="A">Lorem blank blank blank amet</seg>
<seg xml:id="B">sed blank blank blank blank invidunt</seg>
</div>
</text>
有rapply
递归替换嵌套列表中的值:
假设 data.xml
包含您的输入。
library(tidyverse)
library(xml2)
read_xml("data.xml") %>%
as_list() %>%
rapply(how = "replace", function(x) {
tokens <-
x %>%
str_split(" ") %>%
simplify()
n_tokens <- length(tokens)
c(
tokens[[1]],
rep("blank", n_tokens - 2),
tokens[[n_tokens]]
) %>%
paste0(collapse = " ")
}) %>%
as_xml_document() %>%
write_xml("data2.xml")
输出文件data2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<text>
<div>
<seg id="A">Lorem blank blank blank amet</seg>
<seg id="B">sed blank blank blank blank invidunt</seg>
</div>
</text>
我对现在准备发布的文件进行了文本挖掘。有几个 XML 文件在段中包含文本(请参见下面的基本示例)。由于版权限制,我必须确保我要发布的文件不包含完整的文本,而有文本的人应该能够 'reconstruct' 文件。为了确保仍然可以执行基本的文本挖掘(= 计算长度),段长度不应更改。因此,我正在寻找一种方法,用虚拟/占位符文本替换所有段中除第一个和最后一个单词之外的每个单词。
基本示例:
输入:
<text>
<div>
<seg xml:id="A">Lorem ipsum dolor sit amet</seg>
<seg xml:id="B">sed diam nonumy eirmod tempor invidunt</seg>
</div>
</text>
输出:
<text>
<div>
<seg xml:id="A">Lorem blank blank blank amet</seg>
<seg xml:id="B">sed blank blank blank blank invidunt</seg>
</div>
</text>
有rapply
递归替换嵌套列表中的值:
假设 data.xml
包含您的输入。
library(tidyverse)
library(xml2)
read_xml("data.xml") %>%
as_list() %>%
rapply(how = "replace", function(x) {
tokens <-
x %>%
str_split(" ") %>%
simplify()
n_tokens <- length(tokens)
c(
tokens[[1]],
rep("blank", n_tokens - 2),
tokens[[n_tokens]]
) %>%
paste0(collapse = " ")
}) %>%
as_xml_document() %>%
write_xml("data2.xml")
输出文件data2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<text>
<div>
<seg id="A">Lorem blank blank blank amet</seg>
<seg id="B">sed blank blank blank blank invidunt</seg>
</div>
</text>