You are here

Фильтрация по стоп-словам

Скрипт предназначен для обработки списков с использованием словаря стоп-слов. Строки, в которых обнаружено хоть одно из стоп-слов, не попадают в выходной файл.

Для удобства применения поместите скрипт в директорию /usr/local/sbin/ и установите chmod 777.

#!/bin/sh
#Фильтрация ключевиков по вхождениям стоп-слов
#Поместить в /usr/local/sbin/
#Применять так: stopwords in_keys.txt stop_words.txt out_keys.txt
KEYS_FILE_NAME=$1
STOP_FILE_NAME=$2
NEW_FILE_NAME=$3
 
if [ "${NEW_FILE_NAME}" = "" ]; then
	echo "Please specify the files."
	echo "Usage: stopwords in_keys.txt stop_words.txt out_keys.txt"
	exit 1
fi
 
Применять так: stopwords in_keys.txt stop_words.txt out_keys.txt
 
rm ${NEW_FILE_NAME}
rm tmp.tmp
 
#Устанавливаем разделитель строк
SAVEIFS=$IFS
IFS='
'
 
STOP_LIST=`cat ${STOP_FILE_NAME}`
KEYWORDS_LIST=`cat ${KEYS_FILE_NAME}`
for KEY_WORD in ${KEYWORDS_LIST}; do
	IS_STOP=0
	for STOP_WORD in ${STOP_LIST}; do
		#echo Stop word: ${STOP_WORD}
		STOP_ENTRY=`echo ${KEY_WORD} | grep -v ${STOP_WORD}`
		if [ "${STOP_ENTRY}" = "" ]; then
			IS_STOP=1
			echo  - ${KEY_WORD}
		fi
	done
	if [ "${IS_STOP}" = 0 ]; then
		echo  + ${KEY_WORD}
		echo  ${KEY_WORD} >> tmp.tmp
	fi
done
 
cat tmp.tmp | sort -u > ${NEW_FILE_NAME}
rm tmp.tmp
 
IFS=$SAVEIFS
 
exit 1
Применять так:
 stopwords in_keys.txt stop_words.txt out_keys.txt

Где:

in_keys.txt - входной файл
stop_words.txt - список стоп-слов
out_keys.txt - выходной файл
Рубрика: 

Comments

Add new comment

CAPTCHA
Ответьте на простой вопрос, посмотрим, нужны ли нам ваши комментарии…
Image CAPTCHA
Enter the characters shown in the image.