2017-04-16 7 views
1

私はセマンティック分析のためにいくつかの使用可能なデータを設定しています。私は反復処理中の生のテキストデータのコーパスを持っています。データを開き、文字列として読み込み、リストに分割し、後でデータセットに組み込むデータを準備します。しかし、私がデータセットを構築するとき、最も一般的な言葉は句読点になります。データをさらに処理する前に、リストから句読点をすべて削除する必要があります。リストから句読点を削除する

import os 
import collections 
import string 
import sys 

import tensorflow as tf 
import numpy as np 
from six.moves import xrange 


totalvocab = [] 

#Loop for: loop through all files in 'Data' directory 
for subdir, dirs, files in os.walk('Data'): 
for file in files: 
    filepath = subdir + os.sep + file 
    print(filepath) 

    #Function for: open file, convert input to string, split into list 
    def read_data(filepath): 
     with open(filepath, 'r') as f: 
      data = tf.compat.as_str(f.read()).split() 
     return data 

    #Run function on data, add file data to full data set. 
    filevocab = read_data(filepath) 
    totalvocab.extend(filevocab) 

    filevocab_size = len(filevocab) 
    print('File vocabulary size: %s' % filevocab_size) 
    totalvocab_size = len(totalvocab) 
    print('Total vocabulary size: %s' % totalvocab_size) 

私は次の操作を行う場合は、次の

def read_data(filepath): 
     with open(filepath, 'r') as f: 
      data = tf.compat.as_str(f.read()) 
      data.translate(string.punctuation) 
      data.split() 
     return data 

言葉は個々の文字に分割されています。 私が試行した他の方法でエラーが発生しました。

答えて

1

コード内のエラーのカップルがあります。

  1. str.split()str.translate()場所に変更はありませんが。
  2. str.translate()はマッピングが必要です。
  3. 固定するために

def read_data(filepath): 
    with open(filepath, 'r') as f: 
     data = tf.compat.as_str(f.read()) 
    data = data.translate(str.maketrans('', '', string.punctuation)) 
    return data.split() 

を句読点を削除し、または例えば、あなたがやりたいことではないかもしれハイフネーションされた単語が連結されます。代わりに、スペースで置き換える句読点を識別することもできます。

+0

ありがとうございます!それはまさに私が必要としたことでした。 また、ハイフネーションされた単語を自分のデータに含める必要があるため、将来のニーズを予測するのも正しいです。どの句読点を置き換えるかを宣言するにはどうすればよいですか? – Sabolis

関連する問題