漢字文から音読み文に転換
Python で、漢字文から音読み文に転換します。¶
# 漢字から音読みに変換する対応表
kanji_to_onyomi = {
'神': 'シン',
'是': 'ゼ',
'信': 'シン',
'実': 'ジツ',
'的': 'テキ',
'你': 'ジ',
'們': 'モン',
'乃': 'ナイ',
'是': 'ゼ',
'爲': 'イ',
'他': 'タ',
'所': 'ショ',
'召': 'ショウ',
'進': 'シン',
'入': 'ニュウ',
'了': 'リョウ',
'儿': 'ジン',
'子': 'ス',
'我': 'ガ',
'主': 'シュ',
'耶': 'ヤ',
'穌': 'ソ',
'基': 'キ',
'督': 'トク',
'的': 'テキ',
'交': 'コウ',
'通': 'ツウ',
# 他の漢字と音読みの対応を追加
}
def convert_to_onyomi_sentence(input_sentence):
# 入力された漢字文を音読み文に変換する関数
words = list(input_sentence) # 文を単語に分割
onyomi_sentence = []
for word in words:
onyomi = kanji_to_onyomi.get(word, word) # 辞書から音読みを取得、なければそのまま単語を使用
onyomi_sentence.append(onyomi)
return ''.join(onyomi_sentence)
# 漢字文を入力
input_sentence = '神是信実的,你們乃是爲他所召,進入了他儿子我們主耶穌基督的交通。'
# 音読み文に変換
result = convert_to_onyomi_sentence(input_sentence)
print(result) # 出力: "シンゼシンジツテキ,ジモンナイゼイタショショウ,シンニュウリョウタジンスガモンシュヤソキトクテキコウツウ。"
Janome で、漢字文から音読み文に転換します。¶
Janome を使って漢字文から音読み文に変換するには、まず漢字を形態素に分割し、それぞれの形態素に対応する音読みを取得する必要があります。ただし、Janome 自体は音読みを直接提供する機能はありません。そのため、別途辞書や API などから音読みを取得する必要があります。
以下は、辞書を使用して漢字文から音読み文に変換するサンプルコードです。このコードでは、kanji_to_onyomi という辞書に漢字と対応する音読みを登録し、入力された漢字文を音読み文に変換します。
%%bash
pip install janome
Janome を使った日本語形態素解析の実践
このコードでは、Janome の Tokenizer を使って日本語の形態素解析を行い、文を形態素に分割しています。それぞれの形態素には、表層形(原形)と品詞などの情報が含まれています。
上記のコードを実行すると、入力した日本語の文が形態素に分割されて、表層形と品詞の情報が表示されるでしょう。Janome はシンプルで使いやすいライブラリなので、日本語の形態素解析に便利です。
from janome.tokenizer import Tokenizer
# 漢字から音読みに変換する対応表(例としていくつかの漢字と音読みを登録)
kanji_to_onyomi = {
'神': 'シン',
'是': 'ゼ',
'信': 'シン',
'実': 'ジツ',
'的': 'テキ',
'你': 'ジ',
'們': 'モン',
'乃': 'ナイ',
'是': 'ゼ',
'爲': 'イ',
'他': 'タ',
'所': 'ショ',
'召': 'ショウ',
'進': 'シン',
'入': 'ニュウ',
'了': 'リョウ',
'儿': 'ジン',
'子': 'ス',
'我': 'ガ',
'主': 'シュ',
'耶': 'ヤ',
'穌': 'ソ',
'基': 'キ',
'督': 'トク',
'的': 'テキ',
'交': 'コウ',
'通': 'ツウ',
'信実': 'シンジツ',
'進入': 'シンニュウ',
'交通': 'コウツウ',
# 他の漢字と音読みの対応を追加
}
def get_onyomi(token):
# 漢字を対応表から検索し、音読みを取得する関数
return kanji_to_onyomi.get(token.surface, token.surface)
def convert_to_onyomi_sentence(input_sentence):
# 入力された漢字文を音読み文に変換する関数
t = Tokenizer()
tokens = t.tokenize(input_sentence)
# print([token.surface for token in tokens])
onyomi_sentence = []
for token in tokens:
onyomi = get_onyomi(token)
onyomi_sentence.append(onyomi)
print(onyomi_sentence)
return ''.join(onyomi_sentence)
# 漢字文を入力
input_sentence = '神是信実的,你們乃是爲他所召,進入了他儿子我們主耶穌基督的交通。'
# 音読み文に変換
result = convert_to_onyomi_sentence(input_sentence)
print(result) # 出力: 'シンゼシンジツテキ,ジモンナイゼイタショショウ,シンニュウリョウタジンスガモンシュヤソキトクテキコウツウ。'
MeCab と UniDic のインストール
%%bash
pip install unidic-lite
pip install mecab-python3
MeCab と UniDic を使用した漢字文の音読み変換
このコードでは、MeCab の Tagger に UniDic のパスを指定して、日本語の形態素解析を行い、漢字文を音読み文に変換しています。漢字の音読みは UniDic の「名詞固有名詞」のフィーチャー情報の7番目に格納されているため、それを取得しています。
注意:/path/to/unidic の部分は、UniDic 辞書の実際のインストールパスに置き換えてください。
また、UniDic に登録されていない単語や未知の単語に対しては、'*'として示されることがあります。その場合は元の漢字をそのまま使用します。さらに、Juman++ などの他の形態素解析エンジンや辞書を利用することも検討してください。
import MeCab
# MeCab + UniDicを使って漢字文から音読みを取得する関数
def get_onyomi(text):
try:
mecab = MeCab.Tagger('-d /path/to/unidic') # UniDicのパスを指定してください
node = mecab.parse(text)
onyomi_text = ''
while node:
features = node.feature.split(',')
if len(features) > 7 and features[0] == '名詞' and features[1] == '固有名詞':
onyomi_text += features[7] if features[7] != '*' else node.surface
else:
onyomi_text += node.surface
node = node.next
return onyomi_text
except Exception as e:
print('エラー:', e)
return None
# 漢字文を入力
input_text = '漢字文を入力してください。'
# 音読みに変換
result = get_onyomi(input_text)
print(result) # 出力例: '漢字文をニュウリョクシテクダサイ。'
sudo apt update
sudo apt install cmake
sudo apt update
sudo apt install protobuf-compiler libprotobuf-dev
%%bash
git clone https://github.com/ku-nlp/jumanpp.git ~/jumanpp
%%bash
mkdir -p ~/jumanpp/build
cd ~/jumanpp/build
cmake ~/jumanpp -DCMAKE_BUILD_TYPE=Release
cd ~/jumanpp
sudo make install
Jumandic 模型 和 GPT 模型 都是用于自然语言处理的模型,但它们的设计目标、架构和应用场景有显著的不同。以下是对这两个模型的比较:
1. 目的与应用¶
Jumandic 模型(用于 Juman++)主要用于 日语形态素分析。它的目标是将日语文本分解成词和词性标注,并为每个单词生成详细的语法信息(例如词性、子类别等)。这是一个基于规则和词典的统计模型,适用于需要精确语法分析的任务,如日语文本解析和机器翻译。
- 主要应用:日语文本分词、词性标注、句法分析。
GPT 模型(Generative Pre-trained Transformer)则是一个基于 深度学习 的生成模型,目标是生成连贯且具有上下文理解能力的自然语言文本。GPT 使用大量的预训练数据进行语言建模,能够生成新的文本、回答问题、进行对话等,适用于多种语言任务。
- 主要应用:文本生成、对话系统、文本摘要、翻译、代码生成等。
2. 技术基础与架构¶
Jumandic 使用 基于词典的模型 和 RNN(循环神经网络),结合了传统的基于规则的系统和现代深度学习技术。它通过大量的标注语料库来进行训练,优化形态素分析的精度要依赖于先验知识的词典和规则,适用于细粒度的语言解析。
GPT 是基于 Transformer 架构的深度学习模型,采用 自注意力机制 来理解和生成文本。GPT 是一种无监督学习模型,通过大规模的语料库进行预训练,然后通过微调(fine-tuning)来适应特定任务。
- 该模型通过从大量数据中学习语言的统计规律来生成文本。
3. 数据与训练¶
- Jumandic 依赖于 标注语料库,例如 京都大学语料库、每日新闻语料库,这些语料库包含了手动标注的词汇和词性信息为输入。
- GPT 则通过 大规模的未标注语料库 进行训练,例如网络文章、书籍、新闻报道等。它通过无监督学习方式训练,理解语言结构和上下文关系。
4. 生成能力¶
- Jumandic 专注于 精确的词汇分割 和 语法分析,主要任务是分解和标注文本中的每个词汇。因此,它并不生成新的文本或语句。
- GPT 则是一种 生成模型,能够从给定的上下文生成自然流畅的文本,甚至在对话中模拟人类的语言反应。GPT 不仅能够解析文本,还能根据需求生成内容。
5. 模型训练与应用¶
- Jumandic 于日语领域,通过对语料库进行训练来改进模型的解析能力。它适用于需要高精度的日语词汇分析和标注的任务。
- GPT 作为一种通用的语言模型,能够处理范围更广,不仅限于特定语言(如日语),还支持多种语言的处理。GPT 适用于对话生成、文本摘要、创意写作等多种任务。
总结¶
- Jumandic 是一个专门针对日语形言的详细解析与词性标注。
- GPT 是一个通用的文本生成模型,能够在多种语言任务中进行推理和生成,适用于更广泛的自然语言处理任务。
尽管两者都是自然语言处理领域的重要模型,但它们各自的侧重点和应用场景有显著差异。
在 Juman++ 项目中,使用的 RNN(循环神经网络) 是一种语言模型,具体称为 RNNLM(Recurrent Neural Network Language Model)。这个 RNNLM 主要用于提高形态素解析的准确性,通过考虑单词序列的语义合理性来进行更准确的词性标注和分词。
RNNLM 的特点¶
语言模型的用途:
- RNNLM 在 Juman++ 中用于判断单词序列的语义自然性。通过这种方式,解析器不仅依赖于规则和统计模型,还结合了上下文的语义信息。
实现细节:
- Juman++ 提供了对 Mikolov RNN(一种经典的 RNN 语言模型)的支持。
- RNN 模型能够预测下一个单词,或者评估给定单词序列的概率,从而在分词和词性标注时帮助选择最合理的候选项。
训练与集成:
- RNN 模型通常需要通过大量标注语料库进行训练,如 Mainichi Shinbun(每日新闻语料库 1995) 或 Kyoto University Corpus。
- 在 Juman++ 的训练过程中,可以通过命令行参数
--rnn-model
加载预训练的 RNN 模型文件。
代码中的应用:
- 在 Juman++ 源代码的
mikolov_rnn_test.cc
文件中,可以看到 RNN 模型的推理过程和上下文处理的实现。
- 在 Juman++ 源代码的
性能提升:
- 使用 RNNLM 后,Juman++ 的解析速度和准确性有显著提升,解析速度比原版 Juman 提高了超过 250 倍。
总结¶
- Juman++ 使用 RNNLM 来增强形态素解析的上下文理解能力。
- RNN 模型的实现基于 Mikolov RNN,并通过训练语料库学习单词序列的语义关系。
- 在实际应用中,通过参数
--rnn-model
加载预训练 RNN 模型来提高解析质量。
%%bash
cd ~ && wget https://lotus.kuee.kyoto-u.ac.jp/nl-resource/jumanpp/jumanpp-1.02.tar.xz
%%bash
cd ~ && tar xJvf ~/jumanpp-1.02.tar.xz
On Linux
%%bash
sudo apt update
sudo apt install libboost-all-dev
On macOS
%%bash
brew install boost
%%bash
cd ~/jumanpp-1.02
./configure
make
sudo make install
Scoop on Windows 11
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
scoop bucket add main
scoop install main/cmake
scoop install main/make
Ubuntu
sudo apt update
sudo apt install g++-10 clang cmake
sudo apt install libprotobuf-dev protobuf-compiler
cd ~ && tar xvf jumanpp-2.0.0-rc4.tar.xz
mkdir -p ~/jumanpp-2.0.0-rc4/build
cd ~/jumanpp-2.0.0-rc4/build && cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local
cd ~/jumanpp-2.0.0-rc4/build && make install -j 4
sudo make install
%%bash
pip install pyknp
from pyknp import Juman
juman = Juman()
def halfwidth_to_fullwidth(text):
result = ''
for char in text:
code = ord(char)
if code == ord(' '):
result += ' '
elif ord('!') <= code <= ord('~'):
# Convert ASCII characters in the range 0x0021 to 0x007E
result += chr(code + 0xFEE0)
else:
result += char
return result
def render(text):
for line in halfwidth_to_fullwidth(text).split('\n'):
if line == '':
yield '\n'
continue
mrphs = juman.analysis(line).mrph_list()
for mrph in mrphs:
if mrph.midasi == mrph.yomi:
yield mrph.midasi
else:
yield ' {}[{}]'.format(
mrph.midasi,
mrph.yomi
)
yield '\n'
def render_to_latex(text):
for line in halfwidth_to_fullwidth(text).split('\n'):
if line == '':
yield '\n'
continue
mrphs = juman.analysis(line).mrph_list()
for mrph in mrphs:
yield f'\\frac{{{mrph.yomi}}}{{{mrph.midasi}}}'
yield '\n'
from IPython.display import Math
line = ''
for word in render_to_latex('''
朝の養い
啓21:3 ……見よ、神の幕屋が人と共にある.神は彼らと共に幕屋を張り……
22 わたしはその中に宮を見なかった.主なる神、全能者と小羊が、その宮だからである。
わたしは七十年以上を費やして聖書を学びましたが、ごく最近になって、聖書が実はただ一つの事、すなわち宇宙的な合併を明らかにしていることを見ました。目的を持つ神にはエコノミーがあり、彼は彼のエコノミーの中で、宇宙的な合併を持つことを意図されます。
わたしたちは、新エルサレムが神のエコノミーの目標であることを見てきましたが、新エルサレムが一つの合併であることを見ませんでした。啓示録第21章2節で使徒ヨハネは、「わたしはまた聖なる都、新エルサレム……を見た」と言い、次の節では「神の幕屋」としての新エルサレムについて語っています。神の幕屋として、新エルサレムは神の住まいであり、……[また]宇宙的な合併です。(リー全集、1994年―1997年、第5巻(下)、「御父により神聖な栄光をもってキリストの栄光が現されたことの結果」、第4編)
'''):
if word == '\n':
display(Math(line))
line = ''
else:
line += word
for word in render("""
朝の養い
啓21:9-11 ……「ここに来なさい.あなたに小羊の妻である花嫁を見せよう」。そして彼はわたしを霊の中で、大きな高い山へ連れて行き、聖なる都エルサレムが、天から出て神から下って来るのをわたしに見せたが、それは神の栄光を持っていた。その光は最も尊い宝石のようであり、水晶のように透明な碧玉のようであった。
新約の主要な内容とは、三一の神がご自身の大いなる喜びにしたがって永遠のエコノミーを持っておられ、それは彼の命と性質の中でご自身を彼の選ばれ、贖われた民の中へと分与し、それによって彼らをご自身の複製とし、彼らが彼を表現するためであるということです。この団体の表現は新エルサレムにおいて究極的に完成します(エペソ3:9.1:9-23)。聖書の究極的な完成である新エルサレムは、神が人と成ることと、人が神格においてではなく、命と性質において神となることと関係があります(啓21:2.3:12)。キリストの中で、神は人と成り、人を彼の命と性質において神とします。それによって贖う神と贖われた人は、共にミングリングされ、構成されて、一つの実体、すなわち新エルサレムとなることができます(21:3、22)。最終的に、三一の、永遠の神は新エルサレムとなってわたしたちすべてと合併し、わたしたちもまた神の有機的な救いの過程を通して(ローマ5:10)、新エルサレムとなります。(「新約の結論(25)」、メッセージ428)
"""):
print(word, end='')
for word in render("""
神是信実的,你們乃是爲他所召,進入了他儿子我們主耶穌基督的交通。
"""):
print(word, end='')
for word in render("""
神、是、信、実、的,你、們、乃、是、爲、他、所、召,進、入、了、他、儿、子、我、們、主、耶、穌、基、督、的、交、通。
"""):
print(word, end='')
jumanpp_train.cc
%%bash
git clone https://github.com/ku-nlp/KyotoCorpus
%%bash
git clone https://github.com/ku-nlp/jumanpp-jumandic
%%bash
cd ~/nlp/jumanpp-jumandic/ && python3 configure.py
%%bash
sudo apt-get update
sudo apt-get install zsh
%%bash
sudo apt-get update
sudo apt-get install ruby-full
%%bash
mkdir -p ~/nlp/jumanpp-jumandic/bld/corpora
cd ~/nlp/jumanpp-jumandic/ && make corpora
%%bash
cd ~/nlp/jumanpp-jumandic/ && make ~/nlp/jumanpp-jumandic/bld/models/jumandic.bin
%%bash
sudo apt update
sudo apt install cmake
%%bash
rm -rf ~/nlp/jumanpp-jumandic/bld/jpp/
%%bash
cd ~/nlp/jumanpp-jumandic/ && make rnn
jumanpp
from ipymock.nlp import annotate
from IPython.display import display, HTML
answser = ''
line = ''
for word in annotate('''
兄弟姉妹、主の内で平安を祈ります!私たち信者は召されて、メシアを受け入れ、経験し、楽しむべきです。彼こそが私たちの王、主、頭、そして霊的な夫であるべきです。まず、私たちはメシアを王として迎え入れ、良心を清め、心を澄ませて、彼の御座が私たちの中で支配することを許すべきです。次に、私たちの主として、彼の愛が私たちを古い自分のために生きることをやめさせ、完全に彼の支配に従い、すべてのことにおいて彼を喜ばせるように動機付けます。また、教会の生活の中でメシアを頭として経験し、彼の権威を体験し、彼から命の供給を受け、メシアの体を建て上げていきます。最終的に、私たちはメシアを霊的な夫として楽しみ、彼との親密な関係を築き、新しいエルサレムの栄光の完成を迎える準備をします。私たちがこのような経験の中に入って、神が喜ばれる道を歩むことができますように。アーメン!
'''):
answser += word
if word == '\n':
display(HTML(line))
line = ''
else:
line += word
from ipymock.nlp import annotate
from IPython.display import display, HTML
answser = ''
line = ''
for word in annotate('E.わたしたちが他の人をどの程度、神へともたらすことができるかは常に、わたしたちが神との関係においてどこにいるかによって測られます。わたしたちは神の中にいればいるほど、ますます他の人を和解させて、神の中へともたらすことができます。パウロは至聖所の中にいた人であったので、信者たちに、至聖所に「進み出(る)(come forward)」ように命じることができました(「出て行く(go forward)」ではない)―Ⅱコリント12:2前半.5:20.ヘブル10:22:'):
answser += word
if word == '\n':
display(HTML(line))
line = ''
else:
line += word
answser
from ipymock.nlp import annotate, halfwidth_to_fullwidth
from IPython.display import display, HTML
answser = ''
line = ''
for word in annotate(halfwidth_to_fullwidth('E.わたしたちが他の人をどの程度、神へともたらすことができるかは常に、わたしたちが神との関係においてどこにいるかによって測られます。わたしたちは神の中にいればいるほど、ますます他の人を和解させて、神の中へともたらすことができます。パウロは至聖所の中にいた人であったので、信者たちに、至聖所に「進み出(る)(come forward)」ように命じることができました(「出て行く(go forward)」ではない)―Ⅱコリント12:2前半.5:20.ヘブル10:22:')):
answser += word
if word == '\n':
display(HTML(line))
line = ''
else:
line += word
answser
filename = '朝202409月全国特別集会'
import os
import shutil
import zipfile
def unzip_epub(epub_file_path):
# Get the absolute path and name of the file
epub_file_path = os.path.abspath(epub_file_path)
# Generate a folder path with the same name
output_dir = os.path.splitext(epub_file_path)[0]
if os.path.exists(output_dir):
shutil.rmtree(output_dir) # Delete a non-empty directory
# Ensure the output directory exists
os.makedirs(output_dir)
# Open and extract the .epub file
with zipfile.ZipFile(epub_file_path, 'r') as zip_ref:
zip_ref.extractall(output_dir)
print(f'The .epub file has been extracted to: {output_dir}')
# Replace with your .epub file path
unzip_epub(f'{filename}.epub')
pip install beautifulsoup4
pip install lxml
import glob
from ipymock.nlp import annotate_html
# Define file path patterns
file_pattern = f'{filename}/OEBPS/Text/[0-9]*Week_*.xhtml'
# Get a list of files that meet the conditions
file_list = glob.glob(file_pattern)
results = []
# Iterate through the files and read their contents
for file_path in file_list:
# Read the file contents
with open(file_path, 'r', encoding='utf-8') as file:
content = file.read()
result = annotate_html(content.replace('イエス', 'ミヤス').replace('キリスト', 'メシア'))
print(f'Result for {file_path}:\n\n', result)
results.append(result)
# Write the modified content back to the file
with open(file_path, 'w', encoding='utf-8') as file:
file.write(result)
import os
import zipfile
def folder_to_epub(folder_path):
# Get the absolute path and name of the folder
folder_path = os.path.abspath(folder_path)
folder_name = os.path.splitext(folder_path)[0]
# Generate a .zip file path with the same name
zip_path = f'{folder_name}.zip'
# Create a .zip file
with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
for root, _, files in os.walk(folder_path):
for file in files:
file_path = os.path.join(root, file)
# Ensure the relative path structure is preserved inside the .zip file
arcname = os.path.relpath(file_path, folder_path)
zipf.write(file_path, arcname)
# Generate the .epub file path
epub_path = f'{folder_name}メシア.epub'
# Rename the .zip file to an .epub file
os.rename(zip_path, epub_path)
print(f'The .epub file has been created: {epub_path}')
# Replace with the folder path you want to compress
folder_to_epub(f'{filename}')
Python で、偽日本語文から音読み文に転換します。¶
%%bash
pip install pykakasi
import pykakasi
kks = pykakasi.kakasi()
text = '神是信実的,你們乃是爲他所召,進入了他儿子我們主耶穌基督的交通。'
result = kks.convert(text)
print(
''.join(
'{}[{}]'.format(
item['orig'],
item['hepburn']
) for item in result
)
)
import pykakasi
kks = pykakasi.kakasi()
def halfwidth_to_fullwidth(text):
result = ''
for char in text:
code = ord(char)
if code == ord(' '):
result += ' '
elif ord('!') <= code <= ord('~'):
# Convert ASCII characters in the range 0x0021 to 0x007E
result += chr(code + 0xFEE0)
else:
result += char
return result
def render_to_latex(text):
for line in halfwidth_to_fullwidth(text).split('\n'):
if line == '':
yield '\n'
continue
for word in kks.convert(line):
if word['orig'] == '\n':
yield '\n'
elif word['kana'] == '':
yield f'\\frac{{{word["orig"]}}}{{{word["orig"]}}}'
else:
yield f'\\frac{{{word["kana"]}}}{{{word["orig"]}}}'
yield '\n'
from IPython.display import Math
line = ''
for word in render_to_latex('''
神是信実的,你們乃是爲他所召,進入了他儿子我們主耶穌基督的交通。
'''):
if word == '\n':
display(Math(line))
line = ''
else:
line += word
from IPython.display import Math
line = ''
for word in render_to_latex('''
抱歉,昨天太忙了。
'''):
if word == '\n':
display(Math(line))
line = ''
else:
line += word
from IPython.display import Math
line = ''
for word in render_to_latex('''
我聚會完了。我現在在超市。
'''):
if word == '\n':
display(Math(line))
line = ''
else:
line += word
from IPython.display import Math
line = ''
for word in render_to_latex('''
用這個輸入法的日語輸入漢字比較方便。
'''):
if word == '\n':
display(Math(line))
line = ''
else:
line += word
from IPython.display import Math
line = ''
for word in render_to_latex('''
主啊,我與ひじりい願意全心全意追隨你。
願意讓你在我們裡面書寫神聖的歷史。
'''):
if word == '\n':
display(Math(line))
line = ''
else:
line += word
from IPython.display import Math
line = ''
for word in render_to_latex('''
我們早點學會這種偽日本語。我們可以用偽日本語交談。沒有人能夠聽懂。
'''):
if word == '\n':
display(Math(line))
line = ''
else:
line += word
from IPython.display import Math
line = ''
for word in render_to_latex('''
### 三 憑著眾召會在基督身體里的交通,平安的神就要將撒但踐踏在我們的腳下——羅十六20。
## **陸 羅馬十六章給了我們使徒保羅絕佳的榜樣,他將眾聖徒帶到基督身體全體相調的生活中;乃是在這樣的生活中,我們才能真正地在生命中作王——五17:**
### 一 保羅對聖徒一一提名問安,至少有二十七個名字;這給我們看見,他對每一位聖徒都相當的認識、瞭解、關心——十六1~16。
### 二 保羅的推薦與問安表達眾聖徒之間相互的關切,以及眾召會之間相互的交通——參西四15~16。
'''):
if word == '\n':
display(Math(line))
line = ''
else:
line += word
from IPython.display import Math
line = ''
for word in render_to_latex('''
今日有時間的話,到銀行去問問:能否把、平井支店、転成、横山町支店?
'''):
if word == '\n':
display(Math(line))
line = ''
else:
line += word
from IPython.display import Math
line = ''
for word in render_to_latex('''
美好的生活
'''):
if word == '\n':
display(Math(line))
line = ''
else:
line += word
from IPython.display import Math
line = ''
for word in render_to_latex('''
嚴曉亮
'''):
if word == '\n':
display(Math(line))
line = ''
else:
line += word
%%bash
pip install unihan-etl
%%bash
pip install cihai
あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん
from cihai.core import Cihai
c = Cihai()
if not c.unihan.is_bootstrapped: # download and install Unihan to db
c.unihan.bootstrap()
query = c.unihan.lookup_char('好')
glyph = query.first()
print("lookup for 好: %s" % glyph.kDefinition)
# lookup for 好: good, excellent, fine; well
query = c.unihan.reverse_char('good')
print('matches for "good": %s ' % ', '.join([glph.char for glph in query]))
# matches for "good": 㑘, 㑤, 㓛, 㘬, 㙉, 㚃, 㚒, 㚥, 㛦, 㜴, 㜺, 㝖, 㤛, 㦝, ...
from cihai.core import Cihai
c = Cihai()
if not c.unihan.is_bootstrapped: # download and install Unihan to db
c.unihan.bootstrap()
query = c.unihan.lookup_char('讀')
glyph = query.first()
glyph.kJapaneseKun
glyph.kJapaneseOn
glyph.kRSJapanese
glyph.kZVariant
glyph.kSemanticVariant
glyph.kSimplifiedVariant
glyph.kTraditionalVariant
glyph.kCompatibilityVariant
glyph.kSpecializedSemanticVariant
dir(glyph)