파이썬3 공부 16

ElementTree로 xml파일 읽어오기 (1)

SemEval의 훈련 데이터를 다운로드 했더니 xml파일이었다. 찾아보니 Python의 import xml.etree.ElementTree as ET로 xml파일을 처리할 수 있었다. 도큐멘트 -> https://docs.python.org/ja/3/library/xml.etree.elementtree.html 참고로 SemEval의 훈련 데이터 xml파일을 열어보면 아래와 같이 되어있다. Being a PC user my whole life.... This computer is absolutely AMAZING!!! 도큐멘트에 나와있는 첫 예시처럼 for문을 사용하면 SemEval 같은 경우, for child in root: print(child.tag, child.attrib) country {'n..

파이썬3 노트 2019.05.07

torchtext로 전처리하기 (1) name, dirname, urls, cls.download()

나는 주로 pytorch로 구현을 하기 때문에 전처리를 torchtext로 같이 많이 한다.사용하면서 배운 점이나 알게된 점, 기억해야 하는 점을 몇 개에 걸쳐서 적을 것이다. torchtext에는 데이터를 불러오기 위한 방법이 2 가지 있다.하나는 내가 직접 path를 지정해주는 것, 두 번째는 파일을 다운로드 할 수 있도록 하는 것.따라서 내 코드를 다른 사람이 사용하거나 내 pc가 아닌 pc로 돌릴 때 내가 갖고 있는 데이터를 같은 path대로 준비하지 않아도 사용할 수 있다는 것이다. 그러기 위해서는 name, dirname, urls라는 변수를 class 초반에 지정해 줄 필요가 있다.예를 들면, 아래와 같다.import torch from torchtext.data import Dataset ..

파이썬3 노트 2019.04.19

[Iterator]

1. Iterator(오브젝트형) 먼저 파이썬 도큐멘트에 나와있는 설명을 보면:데이터의 연속(stream)을 표현하는 오브젝트이다. iterator의 __next__() 메서드(혹은 내장 함수인 next())에 대한 반복적인 호출은 시퀀스 속 아이템을 잇따라 불러온다. 더이상 불러올 아이템이 없을 경우에는 StorIteration 예외가 대신 반환된다. iterator는 iterator 오브젝트 그 자체를 반환하는 __iter__() 메서드를 가지기 때문에 모든 iterator는 당연히 iterable하며 다른 iterable이 적용될 수 있는 곳에 사용될 수 있다. 딱 하나 예외는 여러번의 반복을 시도하는 코드이다. 컨테이너 오브젝트(e.g. list)를 iter()에 넘길 때 마다 혹은 for 반복문..

파이썬3 노트 2019.01.13

파이썬이 느리지만 대중적인 이유

원문 기사: https://medium.com/@trungluongquang/why-python-is-popular-despite-being-super-slow-83a8320412a9Why Python is Popular Despite Being (Super) Slow이 글에 사용된 사진은 모두 원글이 출처입니다. 파이썬이 느린 이유:고급 프로그래밍 언어(High-Level Programming Language)이기 때문이다: 파이썬은 인간의 사고와 비슷한 구조를 갖는다. 이를 위해 메모리 관리, 포인터 등과 같은 컴퓨터의 상세한 사정은 추상적으로 표현될 필요가 있다. 따라서 저급 프로그래밍 언어인 C언어보다 느릴 수 밖에 없다.파이썬은 해석형 언어(Interpreted)이며 컴파일되지 않는다: 파이썬 ..

Medium 노트 2019.01.07

torchtext: example 속 들여다보기

torchtext를 쓰다보면 from torchtext.data import Dataset, Example, Field, Iterator, LabelField, NestedField, RawField class Anything(Dataset): def __init__(self, *arg, fields, filter_pred=None): examples = [] ... super(Anything, self).__init__(examples, fields, filter_pred) examples라는 것을 볼 수 있는데(물론 오브젝트형은 달리도 엄청 많지만) examples 속에 어떻게 내용이 들어가 있는가 확인하기 위해서는

파이썬3 노트 2018.12.31

[**kwargs] [assert]

함수를 만들 때 인수로 *args를 넣으면 (정확하게 말하자면 * 를 붙인 인수인데 보통은 저렇게 적으니까) 0개 이상의 인수가 들어올 수도 있고 아닐 수도 있으며 입력될 때에는 몇 개나 입력이 될지 정해놓지 않았다는 이야기가 된다. 1. **kwargs 하지만 인수 중에는 키워드 인수라는 것이 있다.이건 값을 정해놓은 인수를 말하며 함수를 만들 때 키워드 인수는 가장 마지막으로 가야 한다. 예로, 아까 올린 pathlib글에 적은 함수를 약간 수정해서 가져오겠다.import torch from torchtext.data import Dataset, Example, Field, LabelField, RawField import csv class DataLoadwithPath(Dataset): urls =..

파이썬3 노트 2018.12.17

pathlib 이야기: [Path.open()] [Path.home()] [exists()] [mkdir()]

파이썬으로 파일을 불러오는데 있어서 pathlib은 중요하다.나는 항상from pathlib import Path dir_folder = Path('file path') file1 = dir_folder / 'file name' file2 = dir_folder / 'folder name' / 'file name' def load(file: Path): with open(file, mode='r') as f: ....혹은import pathlib dir_folder = pathlib.Path(__file__).parent() file1 = dir_folder / 'file name' def load(file: pathlib): with open(file, mode='r') as f: ...와 같이 pat..

파이썬3 노트 2018.12.15

[return] [yield] [yield from]

파이썬3.+ 에서 함수를 만들 때 마지막에 return을 적으면 return 뒤에 나오는 값을 반환하고 함수를 끝낸다. 예를 들어, 아래와 같은 함수가 있다고 하자.def noniter(file: Path): datum = [] with open(file, mode='r', encoding='utf-8') as f: csvf = csv.reader(f) for line in csvf: data = (line[1], tokenize(line[3])) datum.append(data) return datum이 함수에 파일 인수를 입력해 실행하면 datum을 반환하고 멈춘다. 하지만 yield는 다르다.return과 달리 함수가 처리한 결과를 반환하고도 처리할 인수가 남았으면 다시 함수를 돌린다.예를 들어, ..

파이썬3 노트 2018.12.15

pytorch 공부: [nn.Sequential][nn.ModuleList]

10월 안에 CNN-LSTM모델을 짜야 하는데 논문 구현해 놓은 깃허브를 보니 계속 nn.Sequential과 nn.ModuleList가 나와서 정리해야겠다 싶었음. [nn.Sequential]이것은 입력값이 하나일 때, 즉 각 레이어를 데이터가 순차적으로 지나갈 때 사용하면 좋은 방법이라는 것 같다.간단히 말하자면 여러 nn.Module을 한 컨테이너에 집어넣고 한 번에 돌리는 방법이다. 구글에서 찾은 예제를 바탕으로 적당히 적어보면 아래와 같다. import torch import torch.nn as nn class CNNModel(nn.Module): def __init__(self, class_num, filter_num, num): super().__init__(): self.layer1 = ..

파이썬3 노트 2018.10.16

모듈/함수 공부: [__hash__()][Collections-Counter]

파이썬 도큐멘트에 따르면 이 모듈은 파이썬 내장 컨테이너 dict, list, set, tuple을 대신하는 특수한 컨테이너 데이터형을 구현하기 위한 것이라 한다. 다 보면 좋겠지만 당장 필요한 것은 Counter에 대한 지식이므로 다른 것은 스킵! [Counter]: hashable한 오브젝트를 세는 사전의 서브클래스 [__hash__()]대체 hashable한 것이 무언가 싶어 찾아보니 hash function이 나왔다. 위키피디아에 따르면 '임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수'라 한다. 이건 한국어판 위키고 일본어판을 보면 '어떤 데이터가 주어졌을 때 그 데이터를 대표하는 수치를 얻는 조작 또는 그러한 수치를 얻기 위한 함수'라고 나와있다. 이거 좀 다른거 아닌가..?? 내..

파이썬3 노트 2018.08.11