토큰화할 텍스트 파일 목록이 많습니다. 나는 작은 데이터 셋을 위해 작동하는 다음 코드를 가지고있다. 그러나 거대한 데이터 세트로 동일한 절차를 사용하는 데 문제가 있습니다. 아래에 작은 데이터 세트의 예제를 제공하고 있습니다. 모두가 작은 데이터 세트와 함께 잘 작동하지만파이썬에서 방대한 양의 텍스트를 토큰 화합니다.
In [1]: text = [["It works"], ["This is not good"]]
In [2]: tokens = [(A.lower().replace('.', '').split(' ') for A in L) for L in text]
In [3]: tokens
Out [3]:
[<generator object <genexpr> at 0x7f67c2a703c0>,
<generator object <genexpr> at 0x7f67c2a70320>]
In [4]: list_tokens = [tokens[i].next() for i in range(len(tokens))]
In [5]: list_tokens
Out [5]:
[['it', 'works'], ['this', 'is', 'not', 'good']]
, 나는 같은 코드 문자열 (문자열 이상 1,000,000 목록) 목록의 거대한 목록을 처리하는 문제가 발생합니다. In [3]
처럼 거대한 데이터 세트로 문자열을 토큰화할 수 있으므로 In [4]
(즉, 터미널에서 종료 됨)에 실패합니다. 텍스트의 본문이 너무 크다고 생각됩니다.
저는 여기에 있기 때문에 목록에있는 문자열 목록을 얻는 절차 개선에 대한 제안을 가지고 있는데, 그 내용은 In [5]
입니다.
그러나 내 실제 목적은 각 목록의 단어를 계산하는 것입니다. 예를 들어, 위의 작은 데이터 세트의 예에서 아래에있는 것들을 갖습니다.
[[0,0,1,0,0,1], [1, 1, 0, 1, 1, 0]] (note: each integer denotes the count of each word)
원하는 결과 (단어 개수)를 얻기 위해 발전기를 목록으로 변환 할 필요가없는 경우 좋을 수도 있습니다.
제 질문에 대해 명확히하지 않으면 알려주세요. 최대한 명확히 밝히고 싶습니다. 고맙습니다.
나는'set()'을 사용하여 모든 문자열의 모든 단어의 원래 목록을 만든 다음 그 문자열을 반복하여 값 표를 생성합니다. – beroe
컴퓨터의 RAM 용량은 얼마입니까? 또한, 귀하의 데이터 집합이 파일에 저장되어 있다고 가정합니다. 문장으로 문장을로드 할 수 있습니까? 그렇게 많은 메모리를 절약 할 수 있습니다 – hmicn