>>> c = collections.Counter(a=23, b=-9)
#You can add a new element and set its value like this:
>>> c['d'] = 8
>>> c
Counter({'a': 23, 'd': 8, 'b': -9})
#Increment:
>>> c['d'] += 1
>>> c
Counter({'a': 23, 'd': 9, 'b': -9}
#Note though that c['b'] = 0 does not delete:
>>> c['b'] = 0
>>> c
Counter({'a': 23, 'd': 9, 'b': 0})
#To delete use del:
>>> del c['b']
>>> c
Counter({'a': 23, 'd': 9})
Counter is a dict subclass
Usefloatto convertstringvalue tofloat. OR We can useeval()also.
Use listappend()method to append tuple to list.
Use try except to prevent code from break.
My text file is:
-34.968398,-6.487265
-34.969448,-6.488250
-34.967364,-6.492370
-34.965735,-6.582322
Code:
p = "/home/vivek/Desktop/test.txt"
result = []
with open(p, "rb") as fp:
for i in fp.readlines():
tmp = i.split(",")
try:
result.append((float(tmp[0]), float(tmp[1])))
#result.append((eval(tmp[0]), eval(tmp[1])))
except:pass
print result
Output:
$ python test.py
[(-34.968398, -6.487265), (-34.969448, -6.48825), (-34.967364, -6.49237), (-34.965735, -6.582322)]
- file_path: 입력할 데이터를 텍스트 문서로 지정합니다.
- text: 입력할 데이터를 딕셔너리 자료형으로 지정합니다.
- font_path: 워드클라우드를 그릴 path를 지정합니다.
- size: 사이즈를 지정, (1024, 512)과 같은 형식으로 입력합니다.
- background_color: 배경색을 지정한다. 색이름을 입력하면 된다. ( 예) white )
- icon_name: 어떤 모양으로 그릴 지 입력합니다. fab fa-twitter(트워터 모양), fas fa-dog(강아지), fas fa-flag(깃발), fas fa-fish(물고기) 등이 있다. 띄어쓰기 앞은 폰트를 의미하고, 뒤에는 모양을 의미한다. 그릴 수 있는 모양은 가지수가 좀 많은데, stylecolud패키지가 설치된 폴더에서 static폴더 밑에 fontawesome.min.css파일을 확인하면 알 수 있다.
- font_path: 폰트를 지정한다.
- output_name: 결과를 파일로 저장한다.
the_list.sort() # sorts normally by alphabetical order
the_list.sort(key=len, reverse=True) # sorts by descending length
the_list.sort(key=lambda item: (-len(item), item))
#########################################
n = ['aaa', 'bbb', 'ccc', 'dddd', 'dddl', 'yyyyy']
for i in reversed(sorted(n, key=len)):
print i
for i in sorted(n, key=len, reverse=True):
print i
-Sort your list by alpha order, then by length.
See the following exmple:
>>> coursesList = ["chemistry","physics","mathematics","art"]
>>> sorted(coursesList,key=len)
['art', 'physics', 'chemistry', 'mathematics']
>>> coursesList.append("mopsosa")
>>> sorted(coursesList,key=len)
['art', 'physics', 'mopsosa', 'chemistry', 'mathematics']
>>> coursesList.sort()
>>> sorted(coursesList,key=len)
['art', 'mopsosa', 'physics', 'chemistry', 'mathematics']
import os
import sys
import konlpy
import pandas as pd
import numpy as np
os.environ['JAVA_OPTS'] = 'Xmx4096M'
import itertools
import mr #local module
file_name = "test_export_mentions_2020-11-17_title.txt"
#file_name = "test_export_mentions_2020-11-17_title_utf8.txt" #test
file_out = "outputfile"
lines_tot = mr.file_len(file_name)
filesize = mr.getfilesize(file_name) * 1000
print("파일명 : ", file_name)
print("줄 개수 : ", lines_tot)
print("파일사이즈 : ", filesize)
f = open(file_name,'r', encoding='utf-8')
numbits = 1000000
loop_num = round(os.stat(file_name).st_size/numbits+1)+1
print(os.stat(file_name).st_size/numbits+1)
print(loop_num)
for i in range(0, loop_num):
o = open('./input/'+file_out+str(i)+'.txt','w', encoding='utf-8')
segment = f.readlines(numbits)
for c in range(0,len(segment)):
o.write(segment[c]+"\n")
o.close()
import itertools
def f_append(text):
sign = 'N'
#기존 파일의 단어를 가져와서 신규 단어가 있는지 확인
with open('./replace_word.txt','r',encoding='utf-8') as f:
list_word = f.read().strip().split('\n')
for line in list_word:
if line == text:
sign = 'Exist'
#print('Exist')
'''
list_word = f.read()
if list_word.find(text) >=0:
sign = 'N'
print('Exist')
'''
if sign == 'N':
#기존 파일에 단어추가
with open('./replace_word.txt', 'a', encoding='utf-8') as myfile:
myfile.write(text)
myfile.write('\n')
sign = 'Yes'
return sign
def f_list():
#단어파일을 list로 리턴
with open('./replace_word.txt','r',encoding='utf-8') as f:
list_word = f.read().strip().split('\n')
return list_word
def f_del(text):
#입력받은 단어를 삭제
sign = 'N'
matrix = []
with open('./replace_word.txt','r',encoding='utf-8') as f:
dic = f.read().strip().split('\n')
for word in dic:
if word != text:
matrix.append(word)
else:
sign = 'Del';
print(sign)
print(dic)
if sign == 'Del':
with open('./replace_word.txt', 'w', encoding='utf-8') as myfile:
#myfile.write(matrix)
for line2 in matrix:
print(line2)
myfile.write(line2)
myfile.write('\n')
sign = 'Y'
return sign
자연어 처리에서 크롤링 등으로 얻어낸 코퍼스 데이터가 필요에 맞게 전처리되지 않은 상태라면, 해당 데이터를 사용하고자하는 용도에 맞게 토큰화(tokenization) & 정제(cleaning) & 정규화(normalization)하는 일을 하게 됩니다. 이번 챕터에서는 그 중에서도 토큰화에 대해서 배우도록 합니다.
주어진 코퍼스(corpus)에서 토큰(token)이라 불리는 단위로 나누는 작업을 토큰화(tokenization)라고 부릅니다. 토큰의 단위가 상황에 따라 다르지만, 보통 의미있는 단위로 토큰을 정의합니다.
이 챕터에서는 토큰화에 대한 발생할 수 있는 여러가지 상황에 대해서 언급하여 토큰화에 대한 개념을 이해합니다. 뒤에서 파이썬과 NLTK 패키지, KoNLPY를 통해 실습을 진행하며 직접 토큰화를 수행해보겠습니다.
## word_tokenize는 Don't를 Do와 n't로 분리하였으며,
## 반면 Jone's는 Jone과 's로 분리한 것을 확인할 수 있습니다.
>from nltk.tokenize import word_tokenize
>print(word_tokenize("Don't be fooled by the dark sounding name, Mr. Jone's Orphanage is as cheery as cheery goes for a pastry shop."))
['Do', "n't", 'be', 'fooled', 'by', 'the', 'dark', 'sounding', 'name', ',', 'Mr.', 'Jone', "'s", 'Orphanage', 'is', 'as', 'cheery', 'as', 'cheery', 'goes', 'for', 'a', 'pastry', 'shop', '.']
## WordPunctTokenizer는 구두점을 별도로 분류하는 특징을 갖고 있기때문에, 앞서 확인했던
## word_tokenize와는 달리 Don't를 Don과 '와 t로 분리하였으며,
## 이와 마찬가지로 Jone's를 Jone과 '와 s로 분리한 것을 확인할 수 있습니다.
>from nltk.tokenize import WordPunctTokenizer
>print(WordPunctTokenizer().tokenize("Don't be fooled by the dark sounding name, Mr. Jone's Orphanage is as cheery as cheery goes for a pastry shop."))
['Don', "'", 't', 'be', 'fooled', 'by', 'the', 'dark', 'sounding', 'name', ',', 'Mr', '.', 'Jone', "'", 's', 'Orphanage', 'is', 'as', 'cheery', 'as', 'cheery', 'goes', 'for', 'a', 'pastry', 'shop', '.']
## 케라스 또한 토큰화 도구로서 text_to_word_sequence를 지원합니다. 이번에는 케라스로 토큰화를 수행해봅시다.
## 케라스의 text_to_word_sequence는 기본적으로 모든 알파벳을 소문자로 바꾸면서 온점이나
## 컴마, 느낌표 등의 구두점을 제거합니다. 하지만 don't나 jone's와 같은 경우 아포스트로피는 보존하는 것을 볼 수 있습니다.
>from tensorflow.keras.preprocessing.text import text_to_word_sequence
>print(text_to_word_sequence("Don't be fooled by the dark sounding name, Mr. Jone's Orphanage is as cheery as cheery goes for a pastry shop."))
["don't", 'be', 'fooled', 'by', 'the', 'dark', 'sounding', 'name', 'mr', "jone's", 'orphanage', 'is', 'as', 'cheery', 'as', 'cheery', 'goes', 'for', 'a', 'pastry', 'shop']
## 표준으로 쓰이고 있는 토큰화 방법 중 하나인 Penn Treebank Tokenization의 규칙에 대해서 소개하고, 토큰화의 결과를 보도록 하겠습니다.
## 규칙 1. 하이푼으로 구성된 단어는 하나로 유지한다.
## 규칙 2. doesn't와 같이 아포스트로피로 '접어'가 함께하는 단어는 분리해준다.
>from nltk.tokenize import TreebankWordTokenizer
>tokenizer=TreebankWordTokenizer()
>text="Starting a home-based restaurant may be an ideal. it doesn't have a food chain or restaurant of their own."
>print(tokenizer.tokenize(text))
['Starting', 'a', 'home-based', 'restaurant', 'may', 'be', 'an', 'ideal.', 'it', 'does', "n't", 'have', 'a', 'food', 'chain', 'or', 'restaurant', 'of', 'their', 'own', '.']