У меня есть файл csv, разделенный запятой, который содержит список прилагательных. Мне нужно извлечь корень и суффикс каждого из них. Можно ли это сделать с помощью AWK?Разбор слов в (корень, суффикс) в AWK
входной файл:
ypperlig;ypperlig;adj.;1
ypperlig;ypperlige;adj.;2
ypperlig;ypperligt;adj.;3
ypperlig;ypperligst;adj.;5
vunden;vunden;adj.;1
vunden;vundne;adj.;2
vunden;vundent;adj.;3
vunden;vundnest;adj.;5
Желаемые выходной файл:
ypperlig,ypperlig,adj., ,e,t,*,st
vunden,vund,adj., ,ne,ent,*,nest
Если порядковый номер отсутствует в колонке 4, как в этих двух примерах, пространство должно быть заменено звездочкой ,
hek2mgl Код:
BEGIN{
FS=";"
}
{
split($1,a,"")
split($2,b,"")
s=""
for(i in a)
{
if(b[i]!=a[i])
{
break;
}
s = s "" a[i]
}
stem[$1]=s;
type[$1] = $3
}
{
suf[$1] = suf[$1] "," substr($2,length(stem[$1])+1)
}
END {
for(i in stem)
{
printf "%s,%s, %s\n",i,stem[i],type[i],suf[i]
}
}
выход:
ypperlig,ypperlig,adj.,,e,t,st
vunden,vund,adj.,,ne,t,nest => wrong
ypperlig,ypperlig,adj., ,e,t,st
vunden,vund,adj., ,ne,ent,nest
Предположительно, «стебель» - это часть, которая является инвариантной между всеми формами прилагательного. Это не обязательно самый длинный общий суффикс в первом экземпляре, хотя он работает в двух приведенных примерах. Если это просто испанский, и файл сортируется так, что второй столбец, как гарантируется, будет в алфавитном порядке в рамках общих записей, то это предположение может работать. Но если порядок грамматический, тогда он будет терпеть неудачу с прилагательными типа «veloz» (гендерно-инвариантные, множественные «скорости»). Это может также иметь проблемы со словами, чей акцентный маркер отличается во множественном числе. (afín, afines) – rici
@rici Это был на самом деле испанский. Когда я задал вопрос, у меня не было исходного файла. Файл находится на датском языке. Какой код вы бы предложили? – Polucho
@rici Да, вы правы. * stem * здесь не правильный термин. Я только пытался решить проблему, как описано в вопросе. Я не владею испанским языком, но могу сказать, что по-немецки он тоже не будет работать из-за нарушений. – hek2mgl