vendor/tomotopy/README.kr.rst in tomoto-0.2.2 vs vendor/tomotopy/README.kr.rst in tomoto-0.2.3

- old
+ new

@@ -196,10 +196,61 @@ print("Log-likelihood of inference: ", ll) infer 메소드는 `tomotopy.Document` 인스턴스 하나를 추론하거나 `tomotopy.Document` 인스턴스의 `list`를 추론하는데 사용할 수 있습니다. 자세한 것은 `tomotopy.LDAModel.infer`을 참조하길 바랍니다. +Corpus와 transform +-------------------- +`tomotopy`의 모든 토픽 모델들은 각자 별도의 내부적인 문헌 타입을 가지고 있습니다. +그리고 이 문헌 타입들에 맞는 문헌들은 각 모델의 `add_doc` 메소드를 통해 생성될 수 있습니다. +하지만 이 때문에 동일한 목록의 문헌들을 서로 다른 토픽 모델에 입력해야 하는 경우 +매 모델에 각 문헌을 추가할때마다 `add_doc`을 호출해야하기 때문에 비효율이 발생합니다. +따라서 `tomotopy`에서는 여러 문헌을 묶어서 관리해주는 `tomotopy.utils.Corpus` 클래스를 제공합니다. +토픽 모델 객체를 생성할때 `tomotopy.utils.Corpus`를 `__init__` 메소드의 `corpus` 인자로 넘겨줌으로써 +어떤 모델에든 쉽게 문헌들을 삽입할 수 있게 해줍니다. +`tomotopy.utils.Corpus`를 토픽 모델에 삽입하면 corpus 객체가 가지고 있는 문헌들 전부가 모델에 자동으로 삽입됩니다. + +그런데 일부 토픽 모델의 경우 문헌을 생성하기 위해 서로 다른 데이터를 요구합니다. +예를 들어 `tomotopy.DMRModel`는 `metadata`라는 `str` 타입의 데이터를 요구하고, +`tomotopy.PLDAModel`는 `labels`라는 `List[str]` 타입의 데이터를 요구합니다. +그러나 `tomotopy.utils.Corpus`는 토픽 모델에 종속되지 않은 독립적인 문헌 데이터를 보관하기 때문에, +corpus가 가지고 있는 문헌 데이터가 실제 토픽 모델이 요구하는 데이터와 일치하지 않을 가능성이 있습니다. +이 경우 `transform`라는 인자를 통해 corpus 내의 데이터를 변형시켜 토픽 모델이 요구하는 실제 데이터와 일치시킬 수 있습니다. +자세한 내용은 아래의 코드를 확인해주세요: + +:: + + from tomotopy import DMRModel + from tomotopy.utils import Corpus + + corpus = Corpus() + corpus.add_doc("a b c d e".split(), a_data=1) + corpus.add_doc("e f g h i".split(), a_data=2) + corpus.add_doc("i j k l m".split(), a_data=3) + + model = DMRModel(k=10) + model.add_corpus(corpus) + # `corpus`에 있던 `a_data`는 사라지고 + # `DMRModel`이 요구하는 `metadata`에는 기본값인 빈 문자열이 채워집니다. + + assert model.docs[0].metadata == '' + assert model.docs[1].metadata == '' + assert model.docs[2].metadata == '' + + def transform_a_data_to_metadata(misc: dict): + return {'metadata': str(misc['a_data'])} + # 이 함수는 `a_data`를 `metadata`로 변환합니다. + + model = DMRModel(k=10) + model.add_corpus(corpus, transform=transform_a_data_to_metadata) + # 이제 `model`에는 기본값이 아닌 `metadata`가 입력됩니다. 이들은 `transform`에 의해 `a_data`로부터 생성됩니다. + + assert model.docs[0].metadata == '1' + assert model.docs[1].metadata == '2' + assert model.docs[2].metadata == '3' + + 병렬 샘플링 알고리즘 ---------------------------- `tomotopy`는 0.5.0버전부터 병렬 알고리즘을 고를 수 있는 선택지를 제공합니다. 0.4.2 이전버전까지 제공되던 알고리즘은 `COPY_MERGE`로 이 기법은 모든 토픽 모델에 사용 가능합니다. 새로운 알고리즘인 `PARTITION`은 0.5.0이후부터 사용가능하며, 이를 사용하면 더 빠르고 메모리 효율적으로 학습을 수행할 수 있습니다. 단 이 기법은 일부 토픽 모델에 대해서만 사용 가능합니다. @@ -252,9 +303,15 @@ --------- `tomotopy`는 MIT License 하에 배포됩니다. 역사 ------- +* 0.12.1 (2021-06-20) + * `tomotopy.LDAModel.set_word_prior()`가 크래시를 발생시키던 문제를 해결했습니다. + * 이제 `tomotopy.LDAModel.perplexity`와 `tomotopy.LDAModel.ll_per_word`가 TermWeight가 ONE이 아닌 경우에도 정확한 값을 반환합니다. + * 용어가중치가 적용된 빈도수를 반환하는 `tomotopy.LDAModel.used_vocab_weighted_freq`가 추가되었습니다. + * 이제 `tomotopy.LDAModel.summary()`가 단어의 엔트로피뿐만 아니라, 용어 가중치가 적용된 단어의 엔트로피도 함께 보여줍니다. + * 0.12.0 (2021-04-26) * 이제 `tomotopy.DMRModel`와 `tomotopy.GDMRModel`가 다중 메타데이터를 지원합니다. (https://github.com/bab2min/tomotopy/blob/main/examples/dmr_multi_label.py 참조) * `tomotopy.GDMRModel`의 성능이 개선되었습니다. * 깊은 복사를 수행하는 `copy()` 메소드가 모든 토픽 모델 클래스에 추가되었습니다. * `min_cf`, `min_df` 등에 의해 학습에서 제외된 단어가 잘못된 토픽id값을 가지는 문제가 해결되었습니다. 이제 제외단 단어들은 토픽id로 모두 `-1` 값을 가집니다.