2012-02-22 1 views
0

Все,снятие стоп-слова с использованием python

У меня есть текст, который нужно очистить, и у меня есть небольшой алгоритм, который работает «в основном».

def removeStopwords(self, data): 
    with open(r'stopwords.txt') as stopwords: 
     wordList = [] 
     for i in stopwords: 
      wordList.append(i.strip()) 
     charList = list(data) 
     cat = ''.join(char for char in charList if not char in wordList).split() 
     return ' '.join(cat) 

Выполните первую строчку на этой странице. http://en.wikipedia.org/wiki/Paragraph и удалите все символы, которые нам не интересны, в этом случае это все символы, отличные от алфавитно-цифровых.

Абзац (из греческого абзаца, «писать рядом» или «написанный рядом») является автономной единицей дискурса в письменной форме, посвященной определенной точке или идее. Параграф состоит из одного или нескольких предложений. [1] [2] Начало абзаца обозначается началом новой строки. Иногда первая строка имеет отступ. В разное время начало абзаца было обозначено пикрой: ¶.

Выход выглядит неплохо, за исключением того, что некоторые из слов неправильно скомбинированы, и я не уверен, как его исправить.

Абзац от греческого paragraphos писать рядом или написано рядом есть selfcontained блок

Обратите внимание на слово «selfcontained» был «selfcontained».

EDIT: Содержание файла стоп-слов, который представляет собой всего лишь кучу символов.

! $ % ^ , & * ( ) { } [ ] <

, . / | \ ? ~ ` : ; "

Оказывается, мне не нужен список слов вообще, потому что я только действительно пытается удалить символы, которые в данном случае были знаки препинания.

 cat = ''.join(data.translate(None, string.punctuation)).split() 
     print ' '.join(cat).lower() 
+0

Что такое содержимое stopwords.txt? Список символов пунктуации, а не тогда, ну, прекратите слова? – geoffspear

+1

Обычно я считаю «удаление пауз» удалением фактических слов (например, «of» или «the»); но похоже, что вы пытаетесь сделать здесь, это на самом деле удалить определенные символы (например, пресечь пунктуацию). Это верно? –

+0

@Wooble stopwords полна не буквенно-цифровых символов или всего, кроме букв и цифр. – aeupinhere

ответ

1

Загрузите/игнорируемые слова stopchars в отдельной функции.

Не печатайте имена и пути файлов жесткого кода.

Ваш список слов должен быть set, а не список.

Однако, если вы работаете с символами, а не с словами, исследуйте str.translate.

+0

Nope ... not HW и мне нужно удалить/заменить эти символы из моих данных, чтобы создать на них индексы Jaccard. – aeupinhere

+0

Это решило мои проблемы. – aeupinhere

2

версии 2.x

line = 'hello!' 
line.translate(None, '!$%') #'hello' 

answers

+0

+1 Игнорируйте анонимный downvoter. 'str.translate' - это путь. Возможно, измените свой пример, чтобы показать удаление букв без буквенно-цифровых символов. –

-2

Один путь будет использовать замены метод и иметь исчерпывающий список символов, которые вы не хотите.

, например:

c=['a','h'] 
a= 'john' 
for item in c: 
    a =a.replace(item,'') 
    print a 

печатает следующее: John Jon

+0

Интересно. Я получаю те же результаты, когда делаю это так. для элемента в списке слов: data = data.replace (item, '') данные для печати – aeupinhere

 Смежные вопросы

  • Нет связанных вопросов^_^