1
daviswei 2019-08-21 17:09:49 +08:00
是不是[A-Za-z0-9]
|
2
jdhao 2019-08-21 17:11:17 +08:00 via Android
capture group? 把英文放到 capture group,只保留这些 group 就 ok 了。英文看成 ascii 字符连续不断的字符串
|
3
SuperMild 2019-08-21 17:15:17 +08:00
如果段落与段落之间有明确区分(比如空行),那么,只取每个段落的头几个和尾几个字符来判断就可以了。
|
5
DiamondbacK 2019-08-21 17:22:03 +08:00
sed '/[^0-9A-z[:punct:]/d'
|
6
taogen 2019-08-21 17:22:11 +08:00 via Android
不知道你是什么编程语言,一般编程语言都采用的是 Unicode 字符编码。你搜一下你的语言,比如 Java 正则提取英文 Unicode 字符串
|
7
DiamondbacK 2019-08-21 17:23:03 +08:00
更正:
sed '/[^0-9A-z[:punct:]]/d' |
8
SuperMild 2019-08-21 17:26:13 +08:00
其他语种的段落里大概率会包含英文字母,如果简单抽取拼接在一起,结果看起来会很奇怪的。建议逐段处理,一段里超过多少个非英语字母就整段抛弃。
|
10
autoxbc 2019-08-21 17:35:14 +08:00
写一个函数,对每个段落打分,按照英文和标点的百分比确定分值
|
11
DiamondbacK 2019-08-21 17:36:24 +08:00
更正(加上空格):
sed '/[^0-9A-z[:punct:] ]/d' |
12
DiamondbacK 2019-08-21 17:39:09 +08:00
怎么问题又变了?不是「只保留纯英文段落」吗?
这个标准本身很明确啊,等同于将你们现在所说的「阈值」设为 0。 |
13
DiamondbacK 2019-08-21 17:54:35 +08:00
你没定义「段落」,所以这里按行来处理。补充一个 gawk 方法:
gawk "!/[^0-9A-z[:punct:] ]/{ print }" |
14
DiamondbacK 2019-08-21 18:08:43 +08:00
|