텍스트를 기계 학습 소프트웨어로 보내기 위해 텍스트를 전처리하는 까다롭고 복잡한 절차가 있습니다.
간단히 말해서:
Bash 스크립트는 수천 개의 텍스트 파일이 대기 중인 폴더로 이동하여 CAT으로 열고 불필요한 줄을 정리 및 제거한 다음 나중에 수동 검사를 위해 파일을 기계 학습 프로세스로 보내기 전에 일부 정보가 포함된 CSV를 디스크에 기록합니다. .
내용 외에도 단어가 나타나는 순서가 기계 학습 프로세스의 핵심이므로 줄 번호를 보존하는 것도 매우 중요합니다.
그래서 내 접근 방식은 다음과 같이 각 줄에 줄 번호를 추가하는 것이었습니다(많은 파이프 명령이 포함된 인라인 하나).
for every file in *.txt
do
cat -v $file | nl -nrz -w4 -s$'\t' | .......
그런 다음 다음과 같은 방법으로 원하지 않는 줄을 제거합니다(예).
...... | sed '/^$/d'| grep -vEi 'unsettling|aforementioned|ruled'
마지막으로 다음과 같은 방식으로 추가 처리를 위해 두 줄이 유지됩니다.
........ | grep -A 1 -Ei 'university|institute|trust|college'
출력은 다음과 같습니다(두 파일 샘플링).
file 1.txt
0098 university of Goteborg is downtown and is one of the
0099 most beautiful building you can visit
0123 the institute of Oslo for advanced investigation
0124 is near the central station and keeps
0234 most important college of Munich
0235 and the most acclaimed teachers are
file 2.txt
0023 there is no trust or confidence
0024 in the counselor to accomplish the new
0182 usually the college is visited
0183 every term for the president but
[편집] 이 단계를 놓쳤습니다. 잘못된 줄에 있습니다. 죄송합니다.
그런 다음 텍스트는 다음과 같은 방식으로 "단락"으로 쌓입니다.
tr '\n\r' ' '| grep -Eio '.{0,0}university.{0,25}|.{0,0}college.{0,25}'
[편집 끝]
이 출력은 변수 "CLEANED_TXT"로 저장되고 다음과 같이 WHILE로 파이프됩니다.
while read everyline; do
if [[ -n "${everyline// }" ]];then
echo "$file;$linenumber;$everyline" >> output.csv
fi
done <<< "$CLEANED_TXT"
done # for every text file
최종 원하는 출력
file 1.txt;0098;university of Goteborg
file 1.txt;0123;the institute of Oslo
file 1.txt;0234;college of Munich
내 질문은줄 번호가 누락되었습니다.GREP이 루프 바로 앞에 있기 때문에 이것이 마지막 단계입니다. 원래 줄 번호가 필요하다는 점을 고려하면. 루프 내에서 번호를 다시 매기는 것은 허용되지 않습니다.
나는 붙어있다. 어떤 도움이라도 대단히 감사하겠습니다.
인사
답변1
업데이트 2전체 줄을 제거하고 tr ... | grep
(그냥 엉망이 됨) while
다음으로 바꾸세요.
while read linenumber everyline; do
everyline=$(echo $everyline | grep -Eio '.{0,0}university.{0,25}|.{0,0}college.{0,25}')
if [[ -n "$everyline" ]]; then
echo "$file;$linenumber;$everyline" >> output.csv
fi
done
올바른 값을 채우고 $linenumber
올바른 위치에 단어를 일치시킵니다.
file1.txt;0098;university of Goteborg is downtown
file1.txt;0234;college of Munich
file1.txt;0182;college is visited
그러나 모든 것이 엉망이므로 유사한 언어로 다시 작성해야 perl
합니다 awk
.