見出し画像

今週の学び

ざっくりとした記憶で書いていく


論文を翻訳するための準備

arxivの論文を読むためにPDFは提供されているけど翻訳が出来ないなって時に、HTMLに変換すればブラウザの翻訳機能が使えると思ったので方法をChatGPTに聞いて対応したときの話(ちなみにTeXソースもあるのでTeX Viewerで翻訳できるか確認しようかと思ったが、TeXはコンパイルする必要があり、使い方もとうの昔に忘れた。どうしても必要になったら考える)

もちろん、有料ソフトを使えば出来るみたいだが、オープンソースで何とかなるのであれば、そうしていく。基幹技術に使われていると仮定するならば尚更だ

で、Macの場合、開発機としては使っておらず、pip installしてあまり環境を破壊したくない(デフォルトで使いたい)ため、仮想環境を作る

# 仮想環境の作成
python3 -m venv myenv
# 仮想環境のActivate
source myenv/bin/activate
# 仮想環境の中身(念の為、空になっているか確認する)
pip list

# 出力結果
"""
Package    Version
---------- -------
pip        21.2.4
setuptools 58.1.0
"""

そしたら、この中に"PyMuPDF"をインストールする

# PyMuPDFのインストール
pip install PyMuPDF

# 仮想環境の中身
pip list

# 出力結果
"""
Package    Version
---------- -------
pip        21.2.4
PyMuPDF    1.24.9
PyMuPDFb   1.24.9
setuptools 58.1.0
"""

うーん、ここでpypdfと同じようにテキストを抽出することが出来るけど、HTMLのタグ付けまでは自動でしてくれないことに気付いた。一旦、終了

※余談だが、PDFからLLM、RAGに連携していく流れがドキュメントに書かれていた。確かに自分もそういうことしたいので、ニーズを汲んでくれてありがたい

他の方法も考える

TeXからHTML
Pandocを使うことでとあるが、環境構築がピンと来ていないのと本当にできるのか怪しい。画像の読み込みなど適切に行うのか?

仕方ないので・・・

本当はarxivのbetaにHTMLで出力するページがあるのだが機能しないので、テキストか画像を出力して、Googleの翻訳機能を使うことにする

とりあえず、デモなのでChatGPT先生にコードを書いてもらう。というか翻訳した結果を読みたいのであってコードを書くことが目的ではない

後は普通に英文が読めれば何の問題もないのだけどね・・・

テキスト

import fitz  # PyMuPDF

# PDFファイルのパスを指定
pdf_path = "2408.06070v2.pdf"

# PDFファイルを開く
pdf_document = fitz.open(pdf_path)

# テキストを保存するための変数
full_text = ""

# 各ページからテキストを抽出
for page_num in range(len(pdf_document)):
    page = pdf_document.load_page(page_num)
    text = page.get_text()
    full_text += f"--- Page {page_num + 1} ---\n{text}\n\n"

# PDFを閉じる
pdf_document.close()

# テキストをファイルに保存
with open('extracted_text.txt', 'w', encoding='utf-8') as text_file:
    text_file.write(full_text)

画像

import fitz  # PyMuPDF

# PDFファイルのパスを指定
pdf_path = '2408.06070v2.pdf'

# PDFを開く
pdf_document = fitz.open(pdf_path)

# 各ページを画像として保存
for page_num in range(len(pdf_document)):
    page = pdf_document.load_page(page_num)
    pix = page.get_pixmap()
    pix.save(f'page_{page_num + 1}.png')

# PDFを閉じる
pdf_document.close()

しかし、やはりHTMLの形式にしたいので、ChatGPTと格闘した後、超、妥協してこの形にした。とにかくインスタントにみたいだけなんだ

import fitz  # PyMuPDF
from bs4 import BeautifulSoup

# PDFファイルのパスを指定
pdf_path = "2408.06070v2.pdf"

# PDFファイルを開く
pdf_document = fitz.open(pdf_path)

# HTMLテキストを保存するための変数
full_html = "<html><head><title>Extracted Text and Images</title></head><body>"

# 各ページからテキストと画像を抽出
for page_num in range(len(pdf_document)):
    page = pdf_document.load_page(page_num)
    html_text = page.get_text("html")

    # BeautifulSoupでHTMLをパース
    soup = BeautifulSoup(html_text, 'html.parser')

    # スタイルを削除(imgタグの属性は設定後に保持する)
    for tag in soup.find_all(True):
        if tag.name != 'img':  # Keep `src` attributes in `img` tags
            tag.attrs = {}  # Remove all attributes for other tags
        else:
            if 'style' in tag.attrs:
                del tag.attrs['style']
                # サイズを設定する
                tag['width'] = '75%'
                tag['height'] = '75%'

    #<img>タグを<p>タグで囲む
    for img_tag in soup.find_all('img'):
        img_tag.wrap(soup.new_tag('p'))

    # ページ番号のタイトルを追加
    full_html += f"<h2>Page {page_num + 1}</h2>\n"

    # プレーンなHTMLとして整形
    full_html += f"{soup.prettify()}\n\n"

# HTMLの閉じタグを追加
full_html += "</body></html>"

# PDFを閉じる
pdf_document.close()

# HTMLテキストをファイルに保存
with open('extracted_text_and_images.html', 'w', encoding='utf-8') as html_file:
    html_file.write(full_html)

HTMLには出力されるようになったので翻訳ボタンで翻訳するだけだ。ただし、文がPDFの構造に追随するのでHTMLであれば改行しなくてもいいところで改行することになる。TeXのコードでは文として続いているのだけどね。

課題

  • TeXの文章を英文から日本語の文章に変換してPDFにコンパイルした方が早いか?

  • ちょっと、この作業に6時間掛けたのは本末転倒だ

はよ、arxivが対応してくれると助かる・・・

llama.cppによるFineTuningを中断した

量子化したいモデルが量子化できなかったため中断した。llama.cppはLoRAによるFineTuningが可能であるが、中々、難易度が高い

モデルのサイズが小さければ使用するメモリは少なく出来るかと思ったんだが・・・。気軽にLoRAくらいまで学習できるようになれば、中々いいと思ったんだが・・・

そろそろ、ClassicなLLMをCPUだけでパソコンのスペックに依存しないで遊べる日が来ていいはずだ。メモリが4GBのパソコンでも動作するのが理想

3日くらい対応、かなり時間を無駄にしてしまった

1日5分!TAB譜しか読めないギタリストが五線譜を初見弾きできるようになる本

Day.31 TAB譜→五線譜に直す作業

今まで、ギターレッスンで五線譜で書く作業はしていたのでTAB譜から5線譜に直す行為自体は抵抗は少ない方なのだが、tab譜から見ると3弦の9フレットって何だっけ?とかよくなる

とりあえず、思い出すことにこだわり過ぎているので本に書いてあるアプローチで失敗してもいいので、どんどんしていこう

C104

コミックマーケットに行ってきた。流石に参加している回数も長いので、あまり新しさは感じられないが、今回は企業ブースで地方自治体や地域産業などに関わるブースを回ってきた

三ヶ日町観光協会

みかんのジュースが美味しかった

肥薩おれんじ鉄道線

熊本の鉄道、西日本方面は詳しくないので初めて知った

京町セイカ@精華町

京都から南に位置する「精華町」、はじめて位置を理解した。コンサートが2回目の開催とのこと

がんばっていきまっしょい

展示中心でゆっくり見ることが出来た

他にも、いくつか見ていったが「地域の団体」が出展してくれるとコミケくらいしかビックサイトまで足を運ばない自分にとっては、知らなかったことを知ることが出来てありがたい。存在を知らないとGoogle検索も出来ないからだ。もちろん、アンテナショップとか、そういうところに行けば色々と知れるのだろうが・・・

読書

今、読んでいる本

生成 Deep Learning 第2版

もう少し理解を深めたいと思って読んでいる。そろそろ事前トレーニングも出来ると面白くなるまた、よく聞く用語を調べる字引としても使っている。いずれにしてもクラシックな手法を広く浅く知りたいので、必要に応じて勉強をしていく

まったく新しいアカデミック・ライティングの教科書

何かサイン本が売っていたので買った。あまり、レポートも書いてこなかった人間なのでフォーマットを知るつもりで読んでいる

今、考えているのは、なぜ、先行研究を調べる必要があるのか?っていう疑問だが、自分なりの答えは人類としての集合知を考えたときにそれぞれやることが重複してはもったいないという結論に至っている。自分が研究しようということを誰かしていたら、それはその人に任せた方が人類全体で見たときには効率的だよねって話

ただし、ビジネスは壁を塗替えられると思っているので既存の産業にもガンガンに勝負していくべしとは考えている

おわり!