Java 从字符串中删除POS标记
我有一个字符串,看起来像: 富尔顿/新罕布什尔州tl县/nn tl格兰德/jj tl陪审团/nn tl赛义德/vbd 星期五/nr an/at调查/nn of/in亚特兰大/np$最近/jj 主要/nn选举/nn产生/vbdJava 从字符串中删除POS标记,java,Java,我有一个字符串,看起来像: 富尔顿/新罕布什尔州tl县/nn tl格兰德/jj tl陪审团/nn tl赛义德/vbd 星期五/nr an/at调查/nn of/in亚特兰大/np$最近/jj 主要/nn选举/nn产生/vbd/no/at证据/nn'/'' 表示/cs任何/dti异常情况/nns发生/vbd发生/nn./ 我只想提取原始文本并丢弃POS标签。我可以使用什么正则表达式来执行此操作。我知道我可以拆分/但我也需要删除标签并获得。我应该使用正则表达式来识别标签吗 富尔顿县大陪审团星期五说,
/
no/at证据/nn'/''
表示/cs任何/dti异常情况/nns发生/vbd发生/nn./
我只想提取原始文本并丢弃POS标签。我可以使用什么正则表达式来执行此操作。我知道我可以拆分/但我也需要删除标签并获得。我应该使用正则表达式来识别标签吗
富尔顿县大陪审团星期五说,他们正在调查亚特兰大的
最近的初选“没有证据”表明存在任何违规行为
发生了
您可以使用模式/.*(\s |$)
删除POS标记。我认为下面的代码应该可以让你非常接近你想要的位置
String input = "The/at Fulton/np-tl County/nn-tl Grand/jj-tl Jury/nn-tl said/vbd Friday/nr an/at investigation/nn of/in Atlanta's/np$ recent/jj primary/nn election/nn produced/vbd / no/at evidence/nn ''/'' that/cs any/dti irregularities/nns took/vbd place/nn ./.";
input = input.replaceAll("/.*?(?:\\s|$)", " ");
System.out.println(input);
输出:
The Fulton County Grand Jury said Friday an investigation of Atlanta's recent primary
election produced no evidence " that any irregularities took place . "
这就是我快速编写的用来提取所需字符串的内容。你有没有更好/更有效的想法,因为我需要在海量数据上完成这项工作
public static void main(String args[]) {
StringBuilder sb = new StringBuilder();
String str = "The/at Fulton/np-tl County/nn-tl Grand/jj-tl Jury/nn-tl said/vbd Friday/nr an/at investigation/nn of/in Atlanta's/np$ recent/jj primary/nn election/nn produced/vbd ``/`` no/at evidence/nn ''/'' that/cs any/dti irregularities/nns took/vbd place/nn ./.";
String [] newLine = str.split(" ");
for (String word : newLine){
int index = word.indexOf("/");
String newWord = word.substring(0, index);
sb.append(newWord);
sb.append(" ");
}
System.out.println(sb);
}
非常感谢你的回答!这个看起来比我的好。