Удалить пунктуацию из списка

Я работаю над настройкой некоторых полезных данных для семантического анализа. У меня есть набор необработанных текстовых данных, которые я перебираю. Я открываю данные, читаю их как строку, разделяю на список и подготавливаю данные для встраивания в набор данных в более поздней функции. Однако, когда я строю набор данных, мои самые распространенные слова заканчиваются пунктуацией. Мне нужно удалить все знаки препинания из списка перед дальнейшей обработкой данных.

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() ожидает отображение.

Чинить:

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()

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

Другие вопросы по тегам