ratsgo / embedding

한국어 임베딩 (Sentence Embeddings Using Korean Corpora)
https://ratsgo.github.io/embedding
MIT License
455 stars 130 forks source link

코드 6-40 수행 시 오류 #82

Closed lazineer closed 4 years ago

lazineer commented 4 years ago

안녕하세요

코드 6-40 수행 시 아래와 같은 오류가 발생합니다.

Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/PIL/Image.py", line 1949, in save
    format = EXTENSION[ext]
KeyError: ''

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "pr.py", line 20, in <module>
    model.visualize_self_attention_scores(sentences[0])
  File "/notebooks/embedding/models/sent_eval.py", line 253, in visualize_self_attention_scores
    visualize_self_attention_scores(tokens, scores, palette, use_notebook=self.use_notebook)
  File "models/visualize_utils.py", line 176, in visualize_self_attention_scores
    export_png(plot, filename)
  File "/usr/local/lib/python3.5/dist-packages/bokeh/io/export.py", line 105, in export_png
    image.save(filename)
  File "/usr/local/lib/python3.5/dist-packages/PIL/Image.py", line 1951, in save
    raise ValueError('unknown file extension: {}'.format(ext))
ValueError: unknown file extension:

확인해보니 visualize_self_attention_scores 함수 호출 시 파일명으로 Viridis256가 들어가고 있었습니다.

sent_eval.py의 visualize_self_attention_scores 함수를 아래와 같이 바꾸어서 해결했습니다.

def visualize_self_attention_scores(self, sentence, palette="Viridis256"):
        tokens, scores = self.get_self_attention_score(sentence)
        visualize_self_attention_scores(tokens, scores, palette, use_notebook=self.use_notebook)
>
def visualize_self_attention_scores(self, sentence):
        tokens, scores = self.get_self_attention_score(sentence)
        visualize_self_attention_scores(tokens, scores, use_notebook=self.use_notebook)

이렇게 바꾸는게 맞는건지 모르겠네요. 확인 바랍니다.

ratsgo commented 4 years ago

@lazineer 님 답이 너무 늦지 않았는지 모르겠네요. 말씀하신 것처럼 visualize_self_attention_scores 함수 호출시 불필요한 인자인 pallete가 들어가서 에러가 난 것으로 보입니다. 해당 코드를 수정해 마스터에 반영해 두었습니다.

오류 제보 진심으로 감사드립니다.