
Advanced Data AnalysisïŒæ§Code InterpreterïŒã§ã©ããªãã¡ã€ã«æäœãã§ããã®ã調ã¹ãŠã¿ãŸãã
ChatGPTã®å
¬åŒãã©ã°ã€ã³ã§ããCode InterpreterïŒä»¥äžãCIãšãããïŒã¯ãæ§ã
ãªãã¡ã€ã«ãèªã¿æžãããããç·šéãããããããšãã§ããŸãã
ããã§ãä»åãCIãã©ããªãã¡ã€ã«ãã©ã®ããã«æ±ãããšãã§ããã®ã調ã¹ãŠã¿ãŸããã
ïŒïŒCIã§æ±ããåºæ¬çãªãã¡ã€ã«
Code Interpreterã¯ãäž»ã«ããã¹ãããŒã¹ã®ãã¡ã€ã«ãèªã¿æžãããããšãã§ããŸããããã«ã¯ä»¥äžã®ãããªãã¡ã€ã«ãå«ãŸããŸãã
ããã¹ããã¡ã€ã«ïŒ.txtïŒ
CSV ãã¡ã€ã«ïŒ.csvïŒ
JSON ãã¡ã€ã«ïŒ.jsonïŒ
Python ãã¡ã€ã«ïŒ.pyïŒ
Markdown ãã¡ã€ã«ïŒ.mdïŒ
Jupyter notebook ãã¡ã€ã«ïŒ.ipynbïŒ
HTML ãã¡ã€ã«ïŒ.htmlïŒ
XML ãã¡ã€ã«ïŒ.xmlïŒ
ïŒïŒCIã§äœ¿ããPythonã©ã€ãã©ãª
çŸåšã®ChatGPTã®ç°å¢ã§ã¯ãæšæºçãªPythonã©ã€ãã©ãªãšäžéšã®è¿œå ã©ã€ãã©ãªãå©çšå¯èœã§ãã以äžã«äž»èŠãªã©ã€ãã©ãªã瀺ããŸãã
æšæºã©ã€ãã©ãª: ãããã¯Pythonã«ä»å±ããŠããã©ã€ãã©ãªã§ã远å ã®ã€ã³ã¹ããŒã«ãå¿ èŠãããŸãããäŸãã°ãmath, datetime, json, re, random, statisticsãªã©ããããŸãã
NumPy: æ°å€èšç®ãå¹ççã«è¡ãããã®ã©ã€ãã©ãªã§ãã倧éã®æ°å€ããŒã¿ãæ±ãéããé«åºŠãªæ°åŠçæŒç®ãè¡ãéã«éåžžã«åœ¹ç«ã¡ãŸãã
Pandas: ããŒã¿åæãè¡ãããã®ã©ã€ãã©ãªã§ãã衚圢åŒã®ããŒã¿ãå¹ççã«æ±ããå å·¥ãåæããããšãå¯èœã§ãã
Matplotlib: ããŒã¿ã®èŠèŠåãè¡ãããã®ã©ã€ãã©ãªã§ããæãç·ã°ã©ãããã¹ãã°ã©ã ãæ£åžå³ãªã©ãæ§ã ãªçš®é¡ã®ã°ã©ããäœæããããšãå¯èœã§ãã
SciPy: ç§åŠæè¡èšç®ãè¡ãããã®ã©ã€ãã©ãªã§ããæé©åãç·åœ¢ä»£æ°ãç©åãè£éãªã©ãå€ãã®ç§åŠèšç®æ©èœãæäŸããŠããŸãã
scikit-learn: æ©æ¢°åŠç¿ãè¡ãããã®ã©ã€ãã©ãªã§ããåé¡ãååž°ãã¯ã©ã¹ã¿ãªã³ã°ãªã©ãå€ãã®æ©æ¢°åŠç¿ã¢ã«ãŽãªãºã ãæäŸããŠããŸãã
äžèšã®ã©ã€ãã©ãªä»¥å€ã«ããå€ãã®ã©ã€ãã©ãªãå©çšå¯èœãšãªã£ãŠããŸãã
ïŒïŒç»åãé³å£°ãã¡ã€ã«
ç¹å®ã®ã©ã€ãã©ãªã䜿çšããŠãç»åãé³å£°ãªã©ã®ãã€ããªãã¡ã€ã«ãæ±ãããšãã§ããŸãã
(1) ç»åãã¡ã€ã«
ç»åãã¡ã€ã«ãæäœããããã«ã以äžã®ã©ã€ãã©ãªãå©çšå¯èœã§ãã
â Pillow (PIL)
Pythonã§æãåºã䜿ãããŠããç»ååŠçã©ã€ãã©ãªã§ããjpeg, png, bmpãªã©ã®å€ãã®åœ¢åŒã®ç»åãã¡ã€ã«ã®èªã¿æžããç·šéããµããŒãããŠããã以äžã®ãããªããšãã§ããŸãã
ç»åã®èªã¿èŸŒã¿ãšä¿å
ç»åã®åœ¢åŒå€æïŒRGBããã°ã¬ãŒã¹ã±ãŒã«ãžã®å€æãªã©ïŒ
ç»åã®ãªãµã€ãºãå転ãåãåãïŒã¯ãããã³ã°ïŒ
ç»åã®æãããã³ã³ãã©ã¹ããè²çžãªã©ã®èª¿æŽ
ãã£ã«ã¿ãªã³ã°ïŒãŒãããã·ã£ãŒãåãªã©ïŒ
â¡ OpenCV
ã³ã³ãã¥ãŒã¿ããžã§ã³ã𿩿¢°åŠç¿ã«é¢é£ããå€ãã®ã¢ã«ãŽãªãºã ãå«ã匷åãªã©ã€ãã©ãªã§ããjpeg, png, bmp, webp, tiffãªã©å€ãã®åœ¢åŒã®ç»åãã¡ã€ã«ã®èªã¿æžããç·šéããµããŒãããŠããã以äžã®ãããªããšãã§ããŸãã
ç»åã®èªã¿èŸŒã¿ãšä¿å
ç»åã®åœ¢åŒå€æïŒRGBããã°ã¬ãŒã¹ã±ãŒã«ãžã®å€æãªã©ïŒ
ç»åã®ãªãµã€ãºãå転ãåãåãïŒã¯ãããã³ã°ïŒ
ãã£ã«ã¿ãªã³ã°ïŒãŒããããšããžæ€åºãªã©ïŒ
ç»åã®ç¹åŸŽæœåºïŒSIFTã SURFãªã©ïŒ
ç»åããã®ãªããžã§ã¯ãæ€åºïŒé¡æ€åºãªã©ïŒ
ç»åã®ã¹ãããã³ã°ïŒããã©ãäœæïŒ
åç»ã®ãã¬ãŒã ããšã®ç»åè§£æ
⢠matplotlib
ãã®ã©ã€ãã©ãªã¯äž»ã«ããŒã¿ã®èŠèŠåã«äœ¿ãããŸãããç»åã®èªã¿èŸŒã¿ã衚瀺ãå¯èœã§ããåºåçµæãPDFãã¡ã€ã«ã«ä¿åããããšãã§ããŸãã
ããã«ãã¥ãŠã®ç»åã®çæãšç·šéã
以äžã®ããã³ããã§ãã«ãã¥ãŠã®ç»åãçæããŠããããŸããã
â SVGã§ãã«ãã¥ãŠã®çµµãæã
ãã«ãã¥ãŠã®çµµãSVGã§æããŠããŠã³ããŒãã§ããããã«ããŠãã ããããã«ãã¥ãŠã¯ãã±ã¢ã³ã®ãã£ã©ã¯ã¿ãŒã§ãè€éãªåœ¢ç¶ããã£ããŒã«ãæã£ãŠããŸããããã§ã¯ãã·ã³ãã«ãªã¹ã¿ã€ã«ã§ãã«ãã¥ãŠã®é¡ãSVGã§æããŠã¿ãŸãããã
以äžã¯ã·ã³ãã«ãªãã«ãã¥ãŠã®é¡ãæãSVGã³ãŒãã§ãïŒ
äœæ¥å®äºãã³ãŒãã®è©³çްã衚瀺
ã·ã³ãã«ãªãã«ãã¥ãŠã®SVGãã¡ã€ã«ãäœæããŸããã以äžã®ãªã³ã¯ããããŠã³ããŒãã§ããŸãïŒ
ãã«ãã¥ãŠã®SVGãããŠã³ããŒã
泚ïŒãã®SVGã¯ã·ã³ãã«ãªã¹ã¿ã€ã«ã§ã®è¡šçŸã§ããå ¬åŒãªãã£ã©ã¯ã¿ãŒã®ãã¶ã€ã³ãšã¯ç°ãªãå ŽåããããŸãã®ã§ããäºæ¿ãã ããã
以äžãããŠã³ããŒãããSVGãã¡ã€ã«ã§ãã

â¡ PILã§ãã«ãã¥ãŠã®çµµãæã
PILã䜿çšããåºæ¬çãªç»åãçµã¿åãããŠããã«ãã¥ãŠã«äŒŒãç»åãæããŠã¿ãŠãã ããã
次ã«ã以äžã®ããã³ããã§ãã«ãã¥ãŠã®ç»åãå転ãããŠã¿ãŸããã
ãã®ç»åãé£ç¶ããŠå転ããGIFãã¡ã€ã«ãäœæããŠãã ããã
ãªãããã®GIFãäœæããããã«çæãããã³ãŒãã¯ä»¥äžã®ãšããã§ãã
from PIL import ImageSequence
# Create a blank list for storing rotated images
rotated_images = []
# Rotate the image in 10 degree increments and store
for angle in range(0, 360, 10):
  rotated_image = image.rotate(angle)
  rotated_images.append(rotated_image)
# Save as a GIF
rotated_images[0].save('rotating_pikachu.gif', save_all=True, append_images=rotated_images[1:], optimize=False, duration=100, loop=0)次ã«ã以äžã®ããã³ããã§ãã«ãã¥ãŠã®ç»åã®è²ãå€åãããŠã¿ãŸããã
ãã®ç»åã®è²çžãé£ç¶ããŠå€åããGIFç»åãäœæããŠãã ããã
ãªãããã®GIFãäœæããããã«çæãããã³ãŒãã¯ä»¥äžã®ãšããã§ãã
import numpy as np
# Create a blank list for storing images with changed hues
hue_changed_images = []
# Change the hue in 10 degree increments and store
for hue in range(0, 256, 10):
  hue_changed_image = change_hue(image, hue)
  hue_changed_images.append(hue_changed_image)
# Save as a GIF
hue_changed_images[0].save('hue_changing_pikachu.gif', save_all=True, append_images=hue_changed_images[1:], optimize=False, duration=100, loop=0)次ã«ç»åçæAIã§çæããç»åãã¢ããããŒãããŠã次ã ãšè²ãå€ããGIFã¢ãã¡ãŒã·ã§ã³ãäœæããŸããã
ãã®ç»åã®è²çžã次ã
ãšå€ãã£ãŠããGIFãã¡ã€ã«ãäœæããŠãã ãããåºåãããGIFãã¡ã€ã«ã¯ä»¥äžã®ãšããã§ãã

次ã«ãç»åã®è²ãæ®µã æãããªã£ãŠæ¶ãããŸãå ã«æ»ã£ãŠããGIFã¢ãã¡ãŒã·ã§ã³ãäœæããŸããã
ãã®ç»åã15ãã¬ãŒã ã§è²ã段ã
æãããªããçœããªã£ãŠå®å
šã«æ¶ããããã§5ãã¬ãŒã ã¹ãããããŠããŸã15ãã¬ãŒã ãããŠå
ã®ç»åã«æ»ã£ãŠããããšãç¹°ãè¿ãGIFã¢ãã¡ãŒã·ã§ã³ãäœæããŠãã ããã


CIãçæããç»åã衚瀺ããã³ãŒã
from PIL import Image
# Load the image
original_image = Image.open('/mnt/data/ãããã5.jpg')
original_image.show()
# Get the size of the image
image_width, image_height = original_image.size
image_width, image_heightCIãçæããRGBå€ã墿žãããŠç»åã®æãããå€ããã³ãŒã
import numpy as np
# Number of frames for the fade in and fade out
num_fade_frames = 15
# Create a list to store the frames
frames = []
# Add the original image to the frames
frames.append(original_image)
# Create the fade in frames
for i in range(1, num_fade_frames + 1):
# Calculate the alpha value
alpha = i / num_fade_frames
# Create a new image with the same size as the original image, filled with white color
white_image = Image.new("RGB", (image_width, image_height), (255, 255, 255))
# Create a new image that is a combination of the original image and the white image
fade_in_frame = Image.blend(original_image, white_image, alpha)
# Add the fade in frame to the frames
frames.append(fade_in_frame)
# Create the pause frames
for _ in range(5):
# Add the white image to the frames
frames.append(white_image)
# Create the fade out frames
for i in range(num_fade_frames - 1, -1, -1):
# Calculate the alpha value
alpha = i / num_fade_frames
# Create a new image that is a combination of the original image and the white image
fade_out_frame = Image.blend(original_image, white_image, alpha)
# Add the fade out frame to the frames
frames.append(fade_out_frame)
# Check the number of frames created
len(frames)CIãçæããGIFã¢ãã¡ãŒã·ã§ã³ãäœæããã³ãŒã
# Create the GIF animation with each frame displayed for 0.2 seconds
gif_filename_02 = "/mnt/data/animation_02.gif"
frames[0].save(
gif_filename_02,
save_all=True,
append_images=frames[1:],
duration=200,
loop=0
)
gif_filename_02ãã以å€ã«ããç»åããæ§ã ãªGIFã¢ãã¡ãŒã·ã§ã³ãäœæã§ããããã§ãã
(2) é³å£°ãã¡ã€ã«
é³å£°ãã¡ã€ã«ãæäœããããã®ã¢ãžã¥ãŒã«ãšããŠãscipy.io.wavfileãå©çšå¯èœã§ããããã¯ãSciPyã©ã€ãã©ãªã®äžéšã§ãWAV圢åŒã®é³å£°ãã¡ã€ã«ãèªã¿æžãããããã®ã¢ãžã¥ãŒã«ã§ããäž»ã«ä»¥äžã®2ã€ã®é¢æ°ãæäŸããŠããŸãã
read(filename):  WAVãã¡ã€ã«ãèªã¿èŸŒã¿ããµã³ããªã³ã°ã¬ãŒãïŒ1ç§ãããã®ãµã³ãã«æ°ïŒãšé³å£°ããŒã¿ã®é åãè¿ããŸããé³å£°ããŒã¿ã®åœ¢åŒã¯éåžžã16ãããæŽæ°ïŒnumpy.int16ïŒãŸãã¯32ãããæµ®åå°æ°ç¹æ°ïŒnumpy.float32ïŒã§ãã
write(filename, rate, data): ãµã³ããªã³ã°ã¬ãŒããšé³å£°ããŒã¿ã®é åãæå®ããŠãWAVãã¡ã€ã«ãæžãåºããŸããæžãåºãããé³å£°ããŒã¿ã®åœ¢åŒã¯ãå ¥åãããããŒã¿ã®åœ¢åŒã«äŸåããŸãã
ãããã®é¢æ°ã䜿çšãããšãWAVãã¡ã€ã«ããé³å£°ããŒã¿ãèªã¿èŸŒã¿ããã®ããŒã¿ãæäœïŒäŸãã°ããã£ã«ã¿ãªã³ã°ããšãã§ã¯ãã®é©çšïŒããçµæãæ°ããWAVãã¡ã€ã«ãšããŠä¿åããããšãã§ããŸãã
ãã ããscipy.io.wavfileã¯æ¯èŒçåºæ¬çãªæ©èœããæäŸããŠããããé³å£°ããŒã¿ã®ãšã³ã³ãŒãã£ã³ã°ãå§çž®ãè€æ°ãã£ã³ãã«ã®é³å£°ãéPCM圢åŒã®WAVãã¡ã€ã«ãªã©ãããé«åºŠãªé³å£°ãã¡ã€ã«ã®æäœã«ã¯å¯Ÿå¿ããŠããŸããã
ãŸããçŸåšã®ç°å¢ã§ã¯ãMP3ãã¡ã€ã«ãçŽæ¥æ±ãããšã¯ã§ããŸãããPythonã§MP3ãã¡ã€ã«ãæ±ãå Žåã¯ãlibrosaãpydubãªã©ã®ã©ã€ãã©ãªã䜿çšããã®ãäžè¬çã§ããããããã®ã©ã€ãã©ãªã¯ãµããŒããããŠããŸããã
MP3ãã¡ã€ã«ãæ±ãããå Žåã¯ããŸãMP3ãWAVã«å€æãããã®äžã§ãSciPyãªã©ã®é³å£°åŠçã©ã€ãã©ãªã䜿çšããŠWAVãã¡ã€ã«ãæäœããŠãã ããã
ããã¢ãã®é³éã®çæã
以äžã®ãšããããã¢ãã®é³éãçæããŠãWAVãã¡ã€ã«ã§åºåããŠããããŸããã
ãã¢ãã®é³éã1ãªã¯ã¿ãŒãçæããŠãäžã€ã®WAVãã¡ã€ã«ã«ãŸãšããŠãã ããããã¢ãã®é³éã1ãªã¯ã¿ãŒãçæããäžã€ã®WAVãã¡ã€ã«ã«ãŸãšããããšãã§ããŸããã以äžã®ãªã³ã¯ãããã¡ã€ã«ãããŠã³ããŒãã§ããŸãã
synthesized_octave.wav
ããã¯åçŽãªããŒãé³ã§åé³éã®åºæ¬åšæ³¢æ°ãæã€é³ãé çªã«é£çµãããã®ã§ããåçããŠã¿ãŠãã ããã
以äžã®WAVãã¡ã€ã«ãåçŽãªããŒãé³ã§åé³éã®åºæ¬åšæ³¢æ°ãæã€é³ãé çªã«é£çµãããã®ã§ãã
ãªãããã®WAVãã¡ã€ã«ãäœæããããã«çæãããã³ãŒãã¯ä»¥äžã®ãšããã§ãã
import numpy as np
from scipy.io.wavfile import write
# Parameters
sample_rate = 44100 Â # number of samples per second
note_duration = 1.0 Â # duration of each note in seconds
# Frequencies of the piano notes from C4 to C5
frequencies = {
  "C4": 261.63,
  "C#4/Db4": 277.18,
  "D4": 293.66,
  "D#4/Eb4": 311.13,
  "E4": 329.63,
  "F4": 349.23,
  "F#4/Gb4": 369.99,
  "G4": 392.00,
  "G#4/Ab4": 415.30,
  "A4": 440.00,
  "A#4/Bb4": 466.16,
  "B4": 493.88,
  "C5": 523.25,
}
# Create an array to hold the full audio sequence
full_audio = np.array([], dtype=np.int16)
# Append each note to the full audio
for note, freq in frequencies.items():
  # Generate the time values for each sample
  t = np.linspace(0, note_duration, int(sample_rate * note_duration), False)
  # Generate the audio signal
  signal = np.sin(freq * t * 2 * np.pi)
  # Ensure that highest value is in 16-bit range
  audio = signal * (2**15 - 1) / np.max(np.abs(signal))
  audio = audio.astype(np.int16)
  # Append the audio for this note to the full audio
  full_audio = np.append(full_audio, audio)
# Write the full audio to a WAV file
write('/mnt/data/synthesized_octave.wav', sample_rate, full_audio)次ã«ã以äžã®ãããªæç€ºãåºããŠã¿ãŸããã

以äžã®ãã¡ã€ã«ãããããŠã§ããWAVãã¡ã€ã«ã§ãã
ãã®WAVãã¡ã€ã«ãäœæããããã«CIãçæããã³ãŒãã¯ä»¥äžã®ãšããã§ãã
import numpy as np
from scipy.io.wavfile import write
# Sampling rate
sr = 44100 # 44100 samples per second
# Frequencies for the notes
frequencies = {
'ã': 261.63,
'ã¬': 293.66,
'ã': 329.63,
'ãã¡': 349.23,
'ãœ': 392.00,
'ã©': 440.00,
'ã·': 493.88
}
# Note sequence
notes = ['ã', 'ã', 'ãœ', 'ã', 'ã', 'ãœ', 'ã©', 'ã©', 'ã©', 'ãœ', 'ãã¡', 'ãã¡', 'ãã¡', 'ãã¡', 'ã', 'ã', 'ã', 'ã¬', 'ã¬', 'ã¬', 'ã']
# Generate the audio for each note
audio = np.concatenate([
np.sin(2 * np.pi * np.arange(sr) * frequencies[note] / sr)
for note in notes
])
# Ensure that highest value is in 16-bit range
audio *= 32767 / np.max(np.abs(audio))
audio = audio.astype(np.int16)
# Write audio to wav file
write('/mnt/data/song.wav', sr, audio)
'/mnt/data/song.wav'ããã¡ããäžã€å€ãããããã§ãð
ïŒïŒMicrosoft Officeãã¡ã€ã«
Pythonã«ã¯Microsoft Officeé¢é£ã®ãã¡ã€ã«ãèªã¿æžãããããã®ã©ã€ãã©ãªãããã€ãååšããŸãã以äžã«äž»èŠãªãã¡ã€ã«ã¿ã€ãããšã®äžè¬çãªã©ã€ãã©ãªã瀺ããŸãã
(1) Wordãã¡ã€ã«ïŒ.docx)
python-docxã¯ãPythonã§Microsoft WordïŒ.docxïŒãã¡ã€ã«ãèªã¿æžãããããã®ã©ã€ãã©ãªã§ãããã®ã©ã€ãã©ãªã䜿çšãããšã以äžã®ãããªããšãè¡ããŸãã
æ°ããããã¥ã¡ã³ãã®äœæïŒç©ºã®ããã¥ã¡ã³ããäœæãããã®äžã«ããã¹ããç»åãããŒãã«ãªã©ã远å ã§ããŸãã
æ¢åã®ããã¥ã¡ã³ãã®èªã¿èŸŒã¿ïŒæ¢åã®Wordãã¡ã€ã«ãèªã¿èŸŒã¿ããã®å å®¹ãæœåºããããæäœãããããããšãã§ããŸãã
ããã¹ãã®è¿œå ãšç·šéïŒããã¥ã¡ã³ãã«ããã¹ãã远å ããããæ¢åã®ããã¹ããç·šéããããæžåŒèšå®ïŒäŸãã°ããã©ã³ãããµã€ãºãè²ãªã©ïŒãè¡ãããšãã§ããŸãã
ãã©ã°ã©ããšèŠåºãã®æäœïŒããã¥ã¡ã³ãå ã®ãã©ã°ã©ããšèŠåºãã远å ãç·šéãåé€ããããšãã§ããŸãã
è¡šã®æäœïŒããã¥ã¡ã³ãã«è¡šã远å ãããã®ã»ã«ã®å 容ãç·šéããããšãã§ããŸãã
ç»åã®è¿œå ïŒããã¥ã¡ã³ãã«ç»åãæ¿å ¥ããããšãã§ããŸãã
ãã ããpython-docxã¯äžéšã®é«åºŠãªWordæ©èœããµããŒãããŠããŸãããããšãã°ãããããŒãããã¿ãŒããããããŒãããšã³ãããŒããã³ã¡ã³ãããã©ãã¯ãã§ã³ãžãªã©ã®æäœã¯ãµããŒããããŠããŸããããŸããæ¢åã®ããã¥ã¡ã³ãããç»åãæœåºããæ©èœããããŸããã
ãªããpython-docxã¯docx圢åŒã®ãã¡ã€ã«ã®ã¿ããµããŒãããŠããŸããå€ãããŒãžã§ã³ã®Wordã§äœ¿çšãããŠããdoc圢åŒã®ãã¡ã€ã«ã¯ãµããŒããããŠããŸããã
(2) Excelãã¡ã€ã«ïŒ.xlsx çïŒ
â Pandas
Pandasã¯ãããŒã¿åæãè¡ãããã®ã©ã€ãã©ãªã§ãããŒã¿ãã¬ãŒã ãšãã圢åŒã§ããŒã¿ãå¹ççã«æ±ãããšãã§ããŸããCSVãExcelãã¡ã€ã«ã®èªã¿æžãããµããŒãããŠããŸãã
Pandasã¯ãExcelãã¡ã€ã«ã«å¯ŸããŠã以äžã®ãããªæäœãå¯èœã§ãã
ãã¡ã€ã«ã®èªã¿èŸŒã¿ïŒpandas.read_excel颿°ã䜿çšããŠExcelãã¡ã€ã«ãèªã¿èŸŒã¿ãããŒã¿ãã¬ãŒã ã«å€æããããšãã§ããŸããèªã¿èŸŒãéã«ã¯ãç¹å®ã®ã·ãŒããæå®ããããããããŒãããã¿ãŒãã¹ãããããããç¹å®ã®åãã€ã³ããã¯ã¹ãšããŠäœ¿çšãããããããšãå¯èœã§ãã
ããŒã¿ãã¬ãŒã ã®æäœïŒèªã¿èŸŒãã ããŒã¿ãã¬ãŒã ã«å¯ŸããŠãæ§ã ãªããŒã¿æäœãè¡ãããšãã§ããŸããäŸãã°ããã£ã«ã¿ãªã³ã°ããœãŒããéçŽãæ¬ æå€ã®è£å®ãæ°ããåã®è¿œå ãæ¢åã®åã®å€æãªã©ãå¯èœã§ãã
ãã¡ã€ã«ãžã®æžã蟌ã¿ïŒDataFrame.to_excel颿°ã䜿çšããŠãããŒã¿ãã¬ãŒã ãExcelãã¡ã€ã«ã«æžãåºãããšãã§ããŸããæžãåºãéã«ã¯ãç¹å®ã®ã·ãŒããæå®ããããããããŒãã€ã³ããã¯ã¹ã®æç¡ãæå®ãããããããšãå¯èœã§ãã
ãã ããPandasã¯ããŒã¿ã®èªã¿æžãã«ç¹åããŠãããããExcelã®ãããªã¹ãã¬ããã·ãŒãç¹æã®æ©èœïŒäŸãã°ãã»ã«ã®æžåŒèšå®ãæ°åŒã®äœ¿çšãã°ã©ãã®äœæãªã©ïŒãçŽæ¥æäœããããšã¯ã§ããŸããã
ãŸããxls圢åŒã®ãã¡ã€ã«ã¯ãµããŒãããŠããŸããã
â¡ openpyxl
openpyxlã¯ãPythonã§Excel 2010以äžã®ãã¡ã€ã«ïŒ.xlsx/.xlsmïŒãèªã¿æžãããããã®ã©ã€ãã©ãªã§ãããã®ã©ã€ãã©ãªã䜿çšãããšãExcelãã¡ã€ã«ã®äžèº«ãè©³çŽ°ã«æäœããããšãã§ããŸããå
·äœçã«ã¯ã以äžã®ãããªæäœãå¯èœã§ãã
ãã¡ã€ã«ã®èªã¿èŸŒã¿ïŒæ¢åã®Excelãã¡ã€ã«ãèªã¿èŸŒãããšãã§ããŸãã
ã·ãŒãã®æäœïŒã¯ãŒã¯ããã¯å ã®ã¯ãŒã¯ã·ãŒãã远å ãåé€ãååã®å€æŽãé åºã®å€æŽãè¡ãããšãã§ããŸããã»ã«ã®æäœïŒç¹å®ã®ã»ã«ã«å€ãèšå®ããããå€ãååŸãããããããšãã§ããŸãããŸããã»ã«ã®æžåŒèšå®ïŒãã©ã³ããè²ã眫ç·ãèæ¯è²ãªã©ïŒã倿Žããããšãå¯èœã§ãã
åãšè¡ã®æäœïŒåãè¡ãæ¿å ¥ãåé€ããŸãã¯èª¿æŽïŒå¹ ãé«ãã®èšå®ïŒããããšãã§ããŸãã
æ°åŒã®äœ¿çšïŒExcelã®æ°åŒãã»ã«ã«èšå®ããããšãã§ããŸãã
ç»åãã°ã©ãã®æ¿å ¥ïŒExcelã·ãŒãã«ç»åãã°ã©ããæ¿å ¥ããããšãã§ããŸãã
ããŒã¿ã®ãã£ã«ã¿ãªã³ã°ããœãŒãïŒã·ãŒãã®ããŒã¿ããã£ã«ã¿ãªã³ã°ããœãŒãããããšãã§ããŸãã
ãããã®æ©èœã䜿çšãããšãPandasã ãã§ã¯å¯Ÿå¿ã§ããªããExcelç¹æã®è©³çŽ°ãªæäœãè¡ãããšãã§ããŸãã
openpyxlããxls圢åŒã®ãã¡ã€ã«ã¯ãµããŒãããŠããŸããã
(3) PowerPointïŒ.pptxïŒ
python-pptxã¯ãPythonã§PowerPointïŒ.pptxïŒãã¡ã€ã«ãèªã¿æžãããããã®ã©ã€ãã©ãªã§ãããã®ã©ã€ãã©ãªã䜿çšãããšã以äžã®ãããªããšãè¡ããŸãã
æ°ãããã¬ãŒã³ããŒã·ã§ã³ã®äœæïŒç©ºã®ãã¬ãŒã³ããŒã·ã§ã³ãäœæãããã®äžã«ã¹ã©ã€ããããã¹ãããã¯ã¹ãå³åœ¢ãç»åãªã©ã远å ã§ããŸãã
æ¢åã®ãã¬ãŒã³ããŒã·ã§ã³ã®èªã¿èŸŒã¿ïŒæ¢åã®PowerPointãã¡ã€ã«ãèªã¿èŸŒã¿ããã®å å®¹ãæœåºããããæäœãããããããšãã§ããŸãã
ã¹ã©ã€ãã®è¿œå ãšåé€ïŒæ°ããã¹ã©ã€ãã远å ããããæ¢åã®ã¹ã©ã€ããåé€ãããããããšãã§ããŸãã
ããã¹ãã®è¿œå ãšç·šéïŒã¹ã©ã€ãã«ããã¹ãããã¯ã¹ã远å ãããã®äžã«ããã¹ããå ¥åããããæžåŒèšå®ïŒäŸãã°ããã©ã³ãããµã€ãºãè²ãªã©ïŒãè¡ãããšãã§ããŸãã
å³åœ¢ã®æäœïŒã¹ã©ã€ãã«å³åœ¢ïŒäŸãã°ãç©åœ¢ãåãç·ãªã©ïŒã远å ãããã®äœçœ®ããµã€ãºãè²ãç·ã®å€ªããªã©ãèšå®ããããšãã§ããŸãã
ç»åã®è¿œå ïŒã¹ã©ã€ãã«ç»åãæ¿å ¥ããããšãã§ããŸãã
è¡šã®æäœïŒã¹ã©ã€ãã«è¡šã远å ãããã®ã»ã«ã®å 容ãç·šéããããšãã§ããŸãã
ãã ããpython-pptxã¯äžéšã®é«åºŠãªPowerPointæ©èœããµããŒãããŠããŸãããããšãã°ãã¢ãã¡ãŒã·ã§ã³ããã©ã³ãžã·ã§ã³ããªãŒãã£ãªããããªã®æ¿å
¥ãªã©ã®æäœã¯ãµããŒããããŠããŸããããŸããæ¢åã®ãã¬ãŒã³ããŒã·ã§ã³ããç»åãæœåºããæ©èœããããŸããã
ãªããpython-pptxã¯pptx圢åŒã®ãã¡ã€ã«ã®ã¿ããµããŒãããŠãããå€ãããŒãžã§ã³ã®PowerPointã§äœ¿çšãããŠããppt圢åŒã®ãã¡ã€ã«ã¯ãµããŒãããŠããŸããã
ïŒïŒPDFãã¡ã€ã«
CIã§äœ¿ããPDFã®ã©ã€ãã©ãªã«ã¯ä»¥äžã®ãããªãã®ããããŸãã
â PyPDF2
PyPDF2ã¯ãPDFãã¡ã€ã«ã®èªã¿æžããšæäœãè¡ãããã®ã©ã€ãã©ãªã§ããããŒãžã®æœåºãšè¿œå ãPDFã®çµåãšåå²ãé åºå€æŽãªã©ã®åºæ¬çãªPDFæäœãè¡ãããšãã§ããŸãã
PyPDF2ã¯äž»ã«æ¢åã®PDFãã¡ã€ã«ãæäœããããã®ã©ã€ãã©ãªã§ãããæ°ããPDFãã¡ã€ã«ããŒãããäœæããæ©èœã¯æäŸããŠããªããããPDFãã¡ã€ã«ãæ°èŠäœæããå Žåã¯ãReportLabãªã©ã®ä»ã®ã©ã€ãã©ãªã䜿çšããå¿
èŠããããŸãã
PDFããããã¹ããæœåºããæ©èœã¯ãPDFãããã¹ãããŒã¹ã®å Žåã®ã¿æå¹ã§ãããã¹ãã£ã³ãããç»åããããã¹ããæœåºããã«ã¯ãOCRïŒå åŠçæåèªèïŒã©ã€ãã©ãªãå¿ èŠã§ãã
ãŸããPyPDF2ã®ããã¹ãæœåºæ©èœã«ã¯éçããããè€éãªã¬ã€ã¢ãŠããç¹æ®ãªæåãšã³ã³ãŒãã£ã³ã°ãæ¥æ¬èªãªã©ã®éã©ãã³æåã®æ±ãã«åŒ±ç¹ããããŸãããã®ãããæ¥æ¬èªã®ããã¹ããå«ãPDFããã®ããã¹ãæœåºã¯ãäžæããããªãããšãå€ãã§ãããã®å Žåã¯ãPDFMinerãªã©ã®ä»ã®ã©ã€ãã©ãªã䜿çšããããšããå§ãããŸãã
â¡ PDFMiner
PDFMinerã¯Pythonã§PDFãã¡ã€ã«ãè§£æããããã®ã©ã€ãã©ãªã§ãPDFãã¡ã€ã«ããã®ããã¹ãæœåºãã¬ã€ã¢ãŠãæ
å ±ã®ååŸãèè
åãäœææ¥æãã¿ã€ãã«ãªã©ã®ã¡ã¿ããŒã¿ã®æœåºãç»åæœåºãªã©ãè¡ãããšãã§ããŸãã
PDFMinerã¯ãæ¥æ¬èªãå«ãéã©ãã³æåã®æ±ãã«ã匷ããæåã®ãšã³ã³ãŒãã£ã³ã°ããã©ã³ãã®åé¡ã«ããããã¹ãæœåºã®åé¡ãæ¯èŒçããŸãåŠçããŸãã
å®éã«è©ŠããŠã¿ãŸããããæ¥æ¬èªã®ããã¹ããæžãããPDFãã¡ã€ã«ããããã¹ãæœåºããŠãå
å®¹ãææ¡ããããšã«æåããŸããã
ãã ããPDFMinerã¯PDFã®äœæãç·šéã«ã¯äœ¿çšã§ããŸãããPDFã®äœæãç·šéãè¡ãå Žåã¯ãPyPDF2ãReportLabãªã©ã®ä»ã®ã©ã€ãã©ãªã䜿çšããå¿
èŠããããŸãã
ãŸããPDFMiner.sixã¯ãPython 2ãš3ã®äž¡æ¹ã«å¯Ÿå¿ããPDFMinerã®ãã©ãŒã¯ã§ãã
⢠ReportLab
ReportLabã¯ãPythonã§PDFãçæããããã®ã©ã€ãã©ãªã§ããå³åœ¢ãããã¹ããç»åãã°ã©ãã£ãã¯ã¹ã衚ãªã©æ§ã
ãªã³ã³ãã³ããPDFã«å«ããããšãã§ããŸãã
ReportLabã¯ãããã¹ãã®æ¿å
¥ãç·šéããã©ã³ãã®éžæããµã€ãºã®å€æŽãªã©ãPDFã§äžè¬çã«å¿
èŠãšãããããã¹ãæäœããµããŒãããŠããŸãã
ãŸããåºæ¬çãªå³åœ¢ã®æç»ããè€éãªã°ã©ãã£ãã¯ã®äœæãŸã§ããµããŒãããŠããããJPEGãPNGãªã©ã®ç»åãã¡ã€ã«ãPDFã«æ¿å
¥ããããšãå¯èœã§ãã衚ãäœæããããšãã§ããŸãã
ããŒãžã¬ã€ã¢ãŠããšã¹ã¿ã€ã«ã®ã«ã¹ã¿ãã€ãºããµããŒãããŠããŸãã
ReportLabã¯PDFãã¡ã€ã«ã®çæã«ç¹åããã©ã€ãã©ãªã§ãããPDFã®èªã¿èŸŒã¿ãããã¹ãã®æœåºã«ã¯äœ¿ããŸãããPDFããããã¹ããæœåºããããã«ã¯ãPDFMinerãªã©ã®ä»ã®ã©ã€ãã©ãªã䜿çšããå¿ èŠããããŸãã
ãPDFãã¡ã€ã«ãŸãšãã
çµè«ãšããŠã¯ãæ¥æ¬èªãå«ãPDFãã¡ã€ã«ããã®ããã¹ãã®æœåºã«ã¯PDFMinerãæ°ããPDFãã¡ã€ã«ã®äœæã«ã¯ReportLabã䜿çšããã¹ãã§ãããŸããããŒãžã®æœåºãPDFãã¡ã€ã«ã®çµåãåå²ãªã©ã®æäœã¯PyPDF2ãããã¹ããå³åœ¢ãç»åãªã©ã®æ¿å ¥ã«ã¯ReportLabã䜿ããŸãã
ãè±èªè«æPDFãã¡ã€ã«ã®èŠçŽã
arXivã®è±èªè«æã®PDFãã¡ã€ã«ããåã»ã¯ã·ã§ã³ã®èŠåºããæœåºããã»ã¯ã·ã§ã³ããšã®èŠçŽãäœæããŸããã
å ¥åãPDFMinerã§ãã®è«æã®ããã¹ããæœåºãããã®äžããåã»ã¯ã·ã§ã³ããšã®èŠåºããæãåºããŠãäžèЧã衚瀺ããŠãã ããã
åºåããæç€ºã«åŸã£ãŠã倧èŠåºããšå°èŠåºããé©åã«äžŠã¹æ¿ããŸãããçµæã¯ä»¥äžã®éãã§ãïŒ
1 Introduction
2 LONGNET
2.1 Preliminary
2.2 Dilated Attention
2.3 Multi-Head Dilated Attention
2.4 Computational Complexity and Token Dependency
3 LONGNET as a Distributed Trainer: Scaling up to 1B Tokens
3.1 Distributed Algorithm
3.2 Scaling up to 1B Tokens
4 Experiments on Language Modeling
4.1 Setup
4.2 Results
4.3 Scaling Curves of Sequence Length
4.4 Scaling up Model Size
4.5 Long Context Prompting
5 Conclusion and Future Work
ãããã®èŠåºãã¯ãè«æã®åã»ã¯ã·ã§ã³ã瀺ããŠããŸãã
å ¥åãåã»ã¯ã·ã§ã³ã®èŠåºããåºã«ããŠãå ã®ææžãå確èªããã»ã¯ã·ã§ã³ããšã«èŠçŽãäœæããŠãã ããã
åºåããã®è«æã¯ãéåžžã«é·ãã·ãŒã±ã³ã¹ãæ±ãããšãã§ããæ°ããTransformerã¢ãã«ãLONGNETã«ã€ããŠè¿°ã¹ãŠããŸãã以äžãã»ã¯ã·ã§ã³ããšã®èŠçŽãæ¥æ¬èªã§æäŸããŸãã
1 ã¯ããã«
ïŒããã¹ããæœåºã§ããªãã£ããããå ·äœçãªèŠçŽã¯ã§ããŸããããéåžžããã®ã»ã¯ã·ã§ã³ã§ã¯ç ç©¶ã®èæ¯ãç®çãäž»ãªè²¢ç®ã説æããŸãïŒ
2 LONGNET
ïŒããã¹ããæœåºã§ããªãã£ããããå ·äœçãªèŠçŽã¯ã§ããŸãããããã®ã»ã¯ã·ã§ã³ã§ã¯LONGNETã®äž»èŠãªæŠå¿µãç¹æ§ã説æããŠããŸãïŒ
2.1 äºåç¥è
Transformerã®æ žå¿ã¯èªå·±æ³šææ©èœã§ãã¯ãšãªãšäžé£ã®ããŒãšå€ãåºåã«ãããã³ã°ããŸããããããèªå·±æ³šææ©èœã¯ã·ãŒã±ã³ã¹é·ã«å¯Ÿããäºæ¬¡çãªäŸåæ§ã®ãããé·ãã·ãŒã±ã³ã¹ã«èŠåŽããŸãããã®åé¡ãç·©åããããã«ãçãªæ³šææ©èœãææ¡ãããã¯ãšãªãããŒãšå€ã®äžéšã«ã®ã¿ã¢ã¯ã»ã¹ã§ããããã«ããŸãã
2.2 ãã€ã¬ãŒãããã»ã¢ãã³ã·ã§ã³
ãã€ã¬ãŒãããã»ã¢ãã³ã·ã§ã³ã¯ãå ¥åïŒQ, K, VïŒãçããã»ã°ã¡ã³ãã«åå²ããããããã®ã»ã°ã¡ã³ãã¯ã·ãŒã±ã³ã¹ã®æ¬¡å ã«æ²¿ã£ãŠéåŒãããŸãã
2.3 ãã«ããããã»ãã€ã¬ãŒãããã»ã¢ãã³ã·ã§ã³
ãã«ããããã»ãã€ã¬ãŒãããã»ã¢ãã³ã·ã§ã³ã§ã¯ãç°ãªãé éšã§èšç®ãè¡ããã¯ãšãª-ããŒ-ããªã¥ãŒãã¢ã®ç°ãªãéšåãçã«ããŸãã
2.4 èšç®è€éæ§ãšããŒã¯ã³äŸåæ§
ãã€ã¬ãŒãããã»ã¢ãã³ã·ã§ã³ãçšããŠãåã¯ãšãª-ããŒ-ããªã¥ãŒãã¢ã¯ RNÃd ããRw/rÃd ãžãšçã«ãããæ³šæèšç®ã®ããããã¹ïŒæµ®åå°æ°ç¹æŒç®ïŒã¯2Nwd/r^2 ãšèŠç©ããããŸãã
3 LONGNETãšåæ£ãã¬ãŒãã³ã°
ãã€ã¬ãŒãããã»ã¢ãã³ã·ã§ã³ã®èšç®è€éæ§ãå€§å¹ ã«äœæžãããã«ãé¢ããããåäžã®GPUããã€ã¹äžã§ã·ãŒã±ã³ã¹é·ãçŸäžã¬ãã«ã«ã¹ã±ãŒãªã³ã°ããããšã¯ãèšç®ãšã¡ã¢ãªã®å¶çŽã«ããäžå¯èœã§ãã
3.1 忣ã¢ã«ãŽãªãºã
LONGNETã®ç·åœ¢èšç®è€éæ§ãå©çšããŠãã·ãŒã±ã³ã¹æ¬¡å ã®åæ£ãã¬ãŒãã³ã°ãè¡ããŸãã
3.2 1BããŒã¯ã³ãŸã§ã®ã¹ã±ãŒãªã³ã°
çŸä»£ã®åæ£ã·ã¹ãã ã§1BããŒã¯ã³ãŸã§ã¹ã±ãŒãªã³ã°ããå¯èœæ§ãæ€èšŒããŸãã
4 èšèªã¢ããªã³ã°ã«ãããå®éš
LONGNETãèšèªã¢ããªã³ã°ã«é©çšããŸããããã¯ããŒã³ã¢ãŒããã¯ãã£ã¯ãMAGNETOãšXPOSã®çžå¯Ÿäœçœ®ãšã³ã³ãŒãã£ã³ã°ãçšããæšæºçãªæ³šææ©èœããã€ã¬ãŒãããã»ã¢ãã³ã·ã§ã³ã§çœ®ãæããŸãã
4.1 ã»ããã¢ãã
LONGNETãèšèªã¢ããªã³ã°ã«é©çšããŸããããã¯ããŒã³ã¢ãŒããã¯ãã£ã¯ãMAGNETOãšXPOSã®çžå¯Ÿäœçœ®ãšã³ã³ãŒãã£ã³ã°ãçšããæšæºçãªæ³šææ©èœããã€ã¬ãŒãããã»ã¢ãã³ã·ã§ã³ã§çœ®ãæããŸãã
4.2 çµæ
LONGNETããããã©ã®Transformerãšã¹ããŒã¹Transformerãšæ¯èŒããŸãã
4.3 ã·ãŒã±ã³ã¹é·ã®ã¹ã±ãŒãªã³ã°æ²ç·
以åã®ç ç©¶ã¯ãèšèªã¢ãã«ããã©ã¡ãŒã¿ããã¬ãŒãã³ã°ããŒã¯ã³ãå¢ããããšã«ããããã€ãã®ã¹ã±ãŒãªã³ã°æ³åã«åŸãããšã瀺ããŠããŸãã
4.4 ã¢ãã«ãµã€ãºã®ã¹ã±ãŒãªã³ã°
å€§èŠæš¡ãªèšèªã¢ãã«ã®éèŠãªç¹æ§ã¯ãæå€±ãã³ã³ãã¥ãŒããšãã¯ãŒããŒãšããŠã¹ã±ãŒã«ããããšã§ãã
4.5 ãã³ã°ã³ã³ããã¹ãããã³ãã
ããã³ããã¯ãèšèªã¢ãã«ã«ã¬ã€ãã³ã¹ãæäŸããè¿œå æ å ±ãæäŸããããã®éèŠãªæ¹æ³ã§ãã
5 çµè«ãšä»åŸã®å±æ
æã ã¯LONGNETã玹ä»ããŸããããã¯ãã·ãŒã±ã³ã¹é·ã10åããŒã¯ã³ä»¥äžã«ã¹ã±ãŒãªã³ã°ã§ããTransformerã®ããªãšãŒã·ã§ã³ã§ãçãã·ãŒã±ã³ã¹ã«å¯Ÿããæå€±ã¯ãããŸããã
ãããã®èŠçŽã¯ãåã»ã¯ã·ã§ã³ã®äž»èŠãªãã€ã³ããæœåºããŠããŸãããå šäœã®æèãçè§£ããããã«ã¯ãåã»ã¯ã·ã§ã³å šäœãèªãããšããå§ãããŸãã
ã1 ã¯ããã«ããªã©ã¯èªã¿åããŠããŸããããããçšåºŠèŠçŽã«æåãããšèšããã§ããããã
ãªããããã«ã¯æçµçãªåºåçµæã®ã¿ã衚瀺ããŠããŸãããå®éã«ã¯ãéäžã§äœåºŠã倱æïŒ2.1ã3.1ãªã©ã®å°èŠåºãã¯èªã¿åããã®ã«ãã1 ã¯ããã«ãã®å€§èŠåºãã¯èªã¿åããªããªã©ïŒããŠããŸãããŸã ãŸã PDFãã¡ã€ã«ã®èªã¿åãã¯ãå®å
šã§ã¯ãªãããã§ãã
ïŒïŒå§çž®ãã¡ã€ã«
Pythonã«ã¯ZIPãã¡ã€ã«ãªã©ã®å§çž®ãã¡ã€ã«ãèªã¿æžãããããã®æšæºã©ã€ãã©ãªãããã€ããããŸãã以äžã«ãäž»ãªå§çž®åœ¢åŒãšãããæ±ãããã®ã©ã€ãã©ãªã瀺ããŸãã
ZIP (.zip): zipfile ã¢ãžã¥ãŒã«ã䜿çšãããšãZIPãã¡ã€ã«ãèªã¿èŸŒãã ããæ°ããZIPãã¡ã€ã«ãäœæãããããããšãã§ããŸãã
gzip (.gz): gzip ã¢ãžã¥ãŒã«ã䜿çšãããšãgzip圢åŒã®ãã¡ã€ã«ãèªã¿èŸŒãã ããæ°ããgzipãã¡ã€ã«ãäœæãããããããšãã§ããŸãã
tar (.tar, .tar.gz, .tar.bz2 ãªã©): tarfile ã¢ãžã¥ãŒã«ã䜿çšãããšãtar圢åŒã®ãã¡ã€ã«ãèªã¿èŸŒãã ããæ°ããtarãã¡ã€ã«ãäœæãããããããšãã§ããŸãã
ãããã®ã¢ãžã¥ãŒã«ã¯Pythonã®æšæºã©ã€ãã©ãªã®äžéšã§ããã远å ã®ã€ã³ã¹ããŒã«ã¯å¿
èŠãããŸããããããã䜿çšããŠãå§çž®ãã¡ã€ã«ãè§£åããããæ°ãã«å§çž®ãã¡ã€ã«ãäœæãããããããšãå¯èœã§ãã
ãã ãã7z圢åŒãrar圢åŒãªã©ã®ç¹æ®ãªå§çž®åœ¢åŒã®ãã¡ã€ã«ãæ±ãããã®ã©ã€ãã©ãªã¯ãµããŒãããŠãããããããã®å§çž®ãã¡ã€ã«ãçŽæ¥æ±ãããšã¯ã§ããŸããããããã®ãã¡ã€ã«ãæ±ãå Žåã¯ãäºãä»ã®åœ¢åŒïŒäŸãã°ZIPïŒã«å€æããŠãã ããã
ïŒïŒãã®ä»ã®ãã¡ã€ã«
Pythonã¯æ§ã ãªããŒã¿åœ¢åŒãæ±ãããšãã§ããæè»æ§ãæã£ãŠããŸããäžèšã§è¿°ã¹ã圢åŒä»¥å€ã«ãã以äžã®ãããªãã¡ã€ã«åœ¢åŒãæ±ãããšãã§ããŸãã
YAML (.yaml): PyYAMLã©ã€ãã©ãªã䜿ã£ãŠYAMLãã¡ã€ã«ãèªã¿æžãããããšãã§ããŸãã
INI (.ini): Pythonã®çµã¿èŸŒã¿ã©ã€ãã©ãªã§ããconfigparserã䜿ã£ãŠINIãã¡ã€ã«ãèªã¿æžãããããšãã§ããŸãã
SQLite (.sqlite, .db): Pythonã®çµã¿èŸŒã¿ã©ã€ãã©ãªã§ããsqlite3ã䜿ã£ãŠSQLiteããŒã¿ããŒã¹ãæäœããããšãã§ããŸãã
HDF5 (.h5, .hdf5): h5pyã©ã€ãã©ãªãPandasã®HDFStoreãªã©ã䜿ã£ãŠHDF5圢åŒã®ãã¡ã€ã«ãèªã¿æžãããããšãã§ããŸãã
ïŒïŒç»åãããã¹ãã®èªã¿åã
Pythonã¯ç»åãããã¹ããå«ãå€ãã®ãã¡ã€ã«åœ¢åŒã®èªã¿åãããµããŒãããŠããŸãã
ããã¹ããã¡ã€ã«ã®å ŽåãPythonã®çµã¿èŸŒã¿é¢æ°ã䜿çšããŠãã¡ã€ã«ãéããå
容ãèªã¿åãããšãã§ããŸãããŸããããè€éãªããã¹ã圢åŒïŒäŸãã°CSVãJSONïŒã®å Žåã¯ãå°çšã®ã©ã€ãã©ãªïŒcsv, jsonãªã©ïŒã䜿çšããããšã§èªã¿åããå¯èœã§ãã
ç»åãã¡ã€ã«ã®å ŽåãPythonã®ã©ã€ãã©ãªïŒPILãOpenCVãªã©ïŒã䜿çšããŠç»åããŒã¿ãèªã¿åãããšãã§ããŸãããããã®ã©ã€ãã©ãªã¯ãç»åã®ãã¯ã»ã«ããŒã¿ãæ°å€ã®é
åãšããŠèªã¿åãããšãå¯èœã«ããŸãã
ãŸããPDFãWordãªã©ã®è€éãªããã¥ã¡ã³ã圢åŒã®å Žåãå°çšã®ã©ã€ãã©ãªïŒPyPDF2ãpython-docxãªã©ïŒã䜿çšããŠããã¹ãå
å®¹ãæœåºããããšãå¯èœã§ãããããããããã®ã©ã€ãã©ãªã§èªã¿åããã®ã¯äž»ã«ããã¹ãå
容ã§ãããã¬ã€ã¢ãŠãæ
å ±ãç»åå
å®¹ãæ£ç¢ºã«ææ¡ããããšã¯å°é£ã§ãã
ïŒïŒOCRæ©èœ
(1) è±æãèšèŒãããç»åã®èªã¿åã
以äžã®ç»åãã¡ã€ã«ã«èšèŒãããæåãèªã¿åãããšãã§ããã詊ããŠã¿ãŸããã


OCRæ©èœã䜿çšããããã«CIãçæããã³ãŒãã¯ä»¥äžã®ãšããã§ãã
from PIL import Image
import pytesseract
# Open the image file
img = Image.open('/mnt/data/OpenAI.png')
# Use Tesseract to do OCR on the image
text = pytesseract.image_to_string(img)
text以äžã®ããã«ãPythonã® Pytesseractã©ã€ãã©ãªã䜿çšããŠãOCRæ©èœã§ç»åã«èšèŒãããããã¹ããèªã¿åãããšãã§ããŸããã
ãªããä»åã¯ãããã¹ãã®èªã¿åãã«æåããŸããããPytesseractã©ã€ãã©ãªã®ã€ã³ããŒããæåŠãããå Žåããããæ¯åæåããèš³ã§ã¯ãããŸããã
(2) æ¥æ¬èªæãèšèŒãããç»åã®èªã¿åã
次ã«ãæåã®ç»åã®ããã¹ããæ¥æ¬èªèš³ãã以äžã®ç»åãã¢ããããŒãããŠãæ¥æ¬èªã®æåãèªã¿åãããšãã§ããã詊ããŠã¿ãŸãã


ãã®ããã«æ¥æ¬èªã®OCRã«ã¯å¯Ÿå¿ããŠããããæ¥æ¬èªãèªã¿åãããšã¯ã§ããªãããã§ãã
(3) è±æãèšèŒãããPDFãã¡ã€ã«ã®èªã¿åã
æåã®è±æãèšèŒãããç»åãã¡ã€ã«ãPDFåãããã¡ã€ã«ãçšæããŠã¢ããããŒãããŸããããã®ãã¡ã€ã«ã«èšèŒãããããã¹ããèªã¿åãããšãã§ããã詊ããŠã¿ãŸãã

æåã¯ããã¹ãã®èªã¿åãã«å€±æããŸãããã2åç®ã«ããã¹ãã®èªã¿åãã«æåããããšãã§ããŸããã
æåã«èªã¿åãã«å€±æãããšãã«CIãçæããã³ãŒãã¯ä»¥äžã®ãšããã§ãã
from PyPDF2 import PdfFileReader
# Open the PDF file in read-binary mode
pdf_path = '/mnt/data/OPenAI PDF.pdf'
pdf = open(pdf_path, 'rb')
# Use PyPDF2 to read the text in the PDF
pdf_reader = PdfFileReader(pdf)
total_pages = pdf_reader.getNumPages()
# Extract text from each page and combine it
pdf_text = ''
for page_number in range(total_pages):
  page = pdf_reader.getPage(page_number)
  pdf_text += page.extractText()
pdf_textPyPDF2ã©ã€ãã©ãªã®PdfFileReaderã䜿çšããããã§ãããPDFãã¡ã€ã«ã«èšèŒãããããã¹ãã®å
容ãèªã¿åãããšã¯ã§ããŸããã§ããã
次ã«ãããã¹ãã®èªã¿åãã«æåãããšãã«CIãçæããã³ãŒãã¯ä»¥äžã®ãšããã§ãã
import pdf2image
# Convert the PDF to a list of images
images = pdf2image.convert_from_path(pdf_path)
# Use OCR to get the text from each image
pdf_image_text = ''
for image in images:
  pdf_image_text += pytesseract.image_to_string(image)
pdf_image_textä»åã¯ãPytesseractã©ã€ãã©ãªã®OCRæ©èœã䜵ããŠäœ¿çšããããšã«ãããããã¹ãã®èªã¿åãã«æåããããã§ãã
(4) æ¥æ¬èªæãèšèŒãããPDFãã¡ã€ã«ã®èªã¿åã
次ã«ãäžèš(2)ã§äœ¿çšããæ¥æ¬èªæãèšèŒãããç»åãã¡ã€ã«ãPDFåãããã¡ã€ã«ãçšæããŠã¢ããããŒãããŸããã

ãã¯ããæ¥æ¬èªã®OCRã«ã¯å¯Ÿå¿ããŠããããæ¥æ¬èªãèªã¿åãããšã¯ã§ããªãããã§ãã
10ïŒãŸãšã
以äžã®ããã«ãCIã¯æ§ã
ãªãã¡ã€ã«ãæ±ãããšãã§ããŸãã
ãŠãŒã¶ãŒãäœæ¥ãäŸé Œããã°ãCIãèªåçã«å¿
èŠãªã©ã€ãã©ãªãã€ã³ããŒãããŠãããã®ã§ãæ®æ®µã¯ãããŸãã©ã€ãã©ãªã®çš®é¡ãæ°ã«ããªããŠã倧äžå€«ã§ãã
ããããããã³ããã§äœ¿çšããã©ã€ãã©ãªãæå®ããããšã«ãããä»ãŸã§ã§ããªãã£ãããšãã§ããããäœæ¥ãå¹ççã«é²ãããããããããšãããã®ã§ãæ¯éãæ§ã
ãªã©ã€ãã©ãªã®ç¹åŸŽãç¥ã£ãп޻çšããŠã¿ãŠãã ããã
äžæ¹ã§ãCIã¯æšæºã©ã€ãã©ãªä»¥å€ã®Pythonã©ã€ãã©ãªã«ã察å¿ããŠããŸããããµããŒãããŠããªãã©ã€ãã©ãªãå€ããããããå€éšãã远å ããããšã¯ã§ããªãããã§ãã
ç¹ã«ãMatplotlibã®ã°ã©ãäœææ©èœãPytesseractã®OCRæ©èœãªã©ãæ¥æ¬èªã«å¯Ÿå¿ããŠããããä»åŸãæ¥æ¬èªã«ã察å¿ããããšãæåŸ
ãããŸãã
ãŸããCIã¯ã€ã³ã¿ãŒãããã¢ã¯ã»ã¹ãå¶éãããŠãããAPIãWebãµã€ãã®ããŒã¿ãå©çšã§ããªãã®ãæ®å¿µã§ãã
OpenAIã¯ãã»ãã¥ãªãã£äžã®çç±ããã€ã³ã¿ãŒãããã¢ã¯ã»ã¹ãå¶éããŠããããã§ããããããã§ãããšãCIã®çšéã倧ããåºãããããæ¯éãå¶éã®ç·©åãæ€èšããŠããããããã®ã§ãã
ãããã«ãããCIã®å©çšã§ããç¯å²ã¯éåžžã«åºããæ§ã
ãªäœæ¥ã®èªååã«åœ¹ç«ã¡ããã§ãã
çããããæ¯éãè²ã
ãªäœ¿ãæ¹ãèããŠã¿ãŠãã ãããCIã¯ãChatGPTã®å¯èœæ§ã倧ããåºããæ©èœã«ãªãã¯ãã§ãã
â»ãã®èšäºã¯ãChatGPTã®åçãåºã«äœæããŸãããæªããç¹ã¯äœåºŠã質åãããªã©ããŠç¢ºèªããŸããããããã§ã誀ããæ®ã£ãŠããå¯èœæ§ããããŸãã®ã§ããã®ç¹ã¯ã泚æãã ããã