我现在被一个问题搞糊涂了,我有3,000多条观察,每条观察都是全文,比如:
text="Ganluo County People's Court of X Province。The plaintiff X, female, born on May, 1980, lives in X County, X Province。The defendant X, male, born on May, 1971, lives in X County, X Province。
It is a divorce dispute, according to 《marriage law》on June 21, 2016。"
现在,我想为原告和被告提取信息,也想知道这篇全文是否包含“《婚姻法》"一词(T代表是,F代表否)
因此,我希望得到以下结果:
| 正文|原告|被告|定律|
| - ------|- ------|- ------|- ------|
| X省甘洛县人民法院,原告X,女,1980年5月生,住X省X县,被告X,男,1971年5月生,住X省X县,根据2016年6月21日《婚姻法》的规定,属离婚纠纷。|原告X,女,1980年5月生,住X省X县。|被告人X,男,1971年5月生,住X省X县。|T型|
我试了好几次,但都不行.非常感谢你的帮助!
随访:
谢谢您的回答,但难点在于全文可能有很多句子以“原告”开头,以标点符号“."结尾,如何只提取首次出现的有原告出生、居住信息的句子,顺序不固定,标点符号总是用来的。
比如整篇文章也可能有“原告声明自己错了”这样的句子,前面答案给的句型也会提取这句话,我不想要。
2条答案
按热度按时间gupuwyp21#
使用
str_extract
和sub
的一种方法。替换将删除任何后续句子(如果它们存在)。因此检测到的 * 原告 * 和 * 被告 * 只能是一个句子长(以。
作为分隔符)。全输出
扩展数据
x8diyxa72#
更新
根据您提供的其他信息,看看这是否适合您。
这里假设原告和被告各只有一个句子,我在"province"的末尾加上了
.*
(如Province),这样,如果 * Province * 不是句子的末尾,它仍然包含整个句子,我省略了P,这样,如果大小写不一致,也没关系。我使用
[^。]+
捕获 * 除句点之外的任何内容 *,因此它只能捕获一个句子。它仍然假定句子以"原告"(或被告)开头。
如果这不起作用,您确实需要提供更多的潜在内容示例。
最初...
你在这里展示的模式有多严密?原告是否总是在第二句话中?被告的描述是否总是跟随原告?是否总是使用标点符号?
这里有一个处理这些数据的方法。这个方法不假设任何给定的顺序,但是它假设使用了标点符号。
在所使用的正则表达式中,您可以看到"原告"(或被告),后面跟着
.*
,这意味着后面跟着任何内容,然后是?
,这告诉我们我们希望先行查找的第一次出现。先行查找,或者我们希望正则表达式停止查找的位置,记录在(?= )
中。您在句子末尾奇怪地编码了.(假设这是翻译的)。如果你的真实数据中有句点或其他可识别的特殊字符,你必须对它进行转义。在这个正则表达式中,你看到句点后面跟星号的代码是...和其他任何东西...所以如果你要查找句点或星号,你必须对它进行"转义",这样正则表达式进程才能知道你指的是字符的字面意思。
如果模式是严格的,您可能会使用
dplyr::separate
来使这变得更加容易。