Удалить пунктуацию из списка
Я работаю над настройкой некоторых полезных данных для семантического анализа. У меня есть набор необработанных текстовых данных, которые я перебираю. Я открываю данные, читаю их как строку, разделяю на список и подготавливаю данные для встраивания в набор данных в более поздней функции. Однако, когда я строю набор данных, мои самые распространенные слова заканчиваются пунктуацией. Мне нужно удалить все знаки препинания из списка перед дальнейшей обработкой данных.
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 ответ
В коде есть пара ошибок:
str.split()
а такжеstr.translate()
не модифицируйте на месте.str.translate()
ожидает отображение.
Чинить:
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()
Удаление знаков препинания, может или не может делать то, что вы хотите, например, дефисные слова будут объединены. В качестве альтернативы вы можете указать пунктуацию, которую замените пробелом.