File size: 1,976 Bytes
99a698e
1e5ac07
 
99a698e
1e5ac07
99a698e
1e5ac07
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99a698e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import gradio as gr
from cijiang import CiJiangRhymer
from cijiang.utils import print_results

rhymer = CiJiangRhymer(strict=False, tone=True)

def get_results(input_text, target_rhyme, beam_width=20, num_candidates=4000):
    out = rhymer.get_rhymes(text=input_text, target_rhyme=target_rhyme, beam_width=beam_width, num_candidates=num_candidates)
    mask_count = text.count("[M]")
    context = text.split('[M]')[0]

    all_outputs = f"======= 韵脚: |{target_rhyme}|\n"
    for i, (seq, log_prob) in enumerate(out[:top_results]): 
        rhymes = seq[-mask_count:].split()
        colored_rhymes = [Fore.RED + part + Style.RESET_ALL if idx < mask_count else part for idx, part in enumerate(rhymes)]
        colored_rhymes = ''.join(colored_rhymes)  # Join the parts back together

        all_outputs += f"{i+1}. {context}{colored_rhymes} (score: {log_prob:.3f})\n"
    all_outputs += "=" * 40
    return all_out

# rhymer = CiJiangRhymer(strict=False, tone=True)

# # 使用韵脚的汉字押韵
# print_results(rhymer, text="[M][M][M][M]", target_rhyme="乱比高低")

# # 使用韵脚的拼音押韵
# print_results(rhymer, text="[M][M][M][M]", target_rhyme="luan4 bi3 gao1 di1")

# # 允许声调不同
# rhymer.tone = False
# print_results(rhymer, text="[M][M][M]", target_rhyme="收视率")
# rhymer.tone = True

# # 上下文押韵
# print_results(rhymer, text="我总是天亮了[M][M]", target_rhyme="排队")
# print_results(rhymer, text="我们两个人的verse价值一辆[M][M][M][M]", target_rhyme="韩国低级")

# # # 上下文非词汇押韵
# print_results(rhymer, text="报名嘻[M][M]", target_rhyme="八个")
# # 长韵脚需要更广的搜索空间
# print_results(rhymer, text="我还是觉得音乐的[M][M][M][M][M]", target_rhyme="背靠背钻研")
# print_results(rhymer, text="我还是觉得音乐的[M][M][M][M][M]", target_rhyme="背靠背钻研", beam_width=300)
demo = gr.Interface(fn=get, inputs="text", outputs="text")
demo.launch()