2017-07-01 5 views
0

2つのテキストとカテゴリの列を含むファイルを処理しようとしています。テキストの列から、英語以外の単語を削除する必要があります。私はPythonを初めて使っているので、これを行う方法に関する提案があれば感謝します。私のファイルには60,000行のインスタンスがあります。ファイルから英語以外の単語を削除するにはどうすればよいですか?

そして、私は下のこのポイントを得ることができますが、このコードは、トリックを行う必要があり、前方

+1

英語以外の単語とは何ですか? a-z以外の特殊文字は何ですか? –

+0

特別な文字だけでなく、arghhhhやohhhhhのような意味のない単語 –

+0

行に英語以外の単語が1つ含まれている場合は、その単語だけを削除するのか、行全体を削除するのでしょうか? –

答えて

0

を移動する方法に助けが必要。

import pandas 
import requests 
import string 

# The following link contains a text file with the 20,000 
# most frequent words in english, one in each line. 
DICTIONARY_URL = 'https://raw.githubusercontent.com/first20hours/' \ 
       'google-10000-english/master/20k.txt' 
PATH = r"C:\path\to\file.csv" 
FILTER_COLUMN_NAME = 'username' 
PRINTABLES_SET = set(string.printable) 

def is_english_printable(word): 
    return PRINTABLES_SET >= set(word) 

def prepare_dictionary(url): 
    return set(requests.get(url).text.splitlines()) 

DICTIONARY = prepare_dictionary(DICTIONARY_URL) 
df = pandas.read_csv(PATH, encoding='ISO-8859-1') 
df = df[df[FILTER_COLUMN_NAME].map(is_english_printable) & 
     df[FILTER_COLUMN_NAME].map(str.lower).isin(DICTIONARY)] 
+0

ありがとう。それは動作しているようですが、filtercolumnnameはこのテーブルのカラムテキストを認識しないようです。 (FIRST_COLUMN_NAME)を印刷するとテキストが表示され、このコードを実行した後にファイルに書き込むと1kbサイズになるので、テキストを読み込んでいるかわからない –

0

あなたは、このような他の言語の句読点、記号やスクリプトなどの非英語の文字を削除したい場合は、文字列モジュールのisalpha()方法を使用することができます。

words=[word.lower() for word in words if word.isalpha()] 

あなたは@Infinity提案を進めることができます20,000の単語で辞書を作成すると、すべてのシナリオをカバーしません無意味な英語の単語を削除します。

この質問はタグ付きテキストマイニングであるため、使用しているコーパスと似ているソースを選択し、ソース内のすべての単語を見つけて、@Infinityアプローチを進めることができます。

+0

英語以外の単語のみを削除しようとしています –

+0

@ MugB - 次にisalpha()で十分だろうと思う。私は以前に言及することを忘れていました。 –

+0

ありがとうございます。私はこれを試してみる –

関連する問題