Giter Site home page Giter Site logo

piglei / ai-vocabulary-builder Goto Github PK

View Code? Open in Web Editor NEW
872.0 872.0 50.0 328 KB

一个使用了 AI 技术的智能生词本工具,特色功能:自动添加生词、读故事助记单词。

License: BSD 3-Clause "New" or "Revised" License

Python 83.34% Makefile 0.26% JavaScript 0.27% HTML 0.23% Vue 14.24% TypeScript 1.54% SCSS 0.12%

ai-vocabulary-builder's Introduction

我是 piglei,现居深圳,负责蓝鲸 aPaaS 平台的后端开发工作。如果你:

  • 热爱编程,精通 Python 或 Go 语言
  • 乐于编写整洁代码,喜欢单元测试
  • 希望加入一个充满活力、技术氛围浓厚的开发团队

欢迎通过邮箱联系我:piglei2007<at>gmail.com

ai-vocabulary-builder's People

Contributors

mpwang avatar natecc0902 avatar piglei avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ai-vocabulary-builder's Issues

【功能建议】建议增加符合“英语学习阶段”的功能

首先感谢开发者!

我觉可以实现一个强大的功能,可以期待一下。首先设定用户学习哪个阶段的单词,然后根据该阶段,比如高考、考研、四六级、雅思等等,来针对性给出真题例句。这样学习英语可能会高效一点。

建议支持直接输入单词,然后就可以添加到生词本

希望可以支持输入单个单词或者多个单词,直接添加到生词本。
很多时候只想将不熟悉的单词保存到单词本,方便后续复习和查阅。
当前要求输入整个句子,有时提取的单词并不是想要添加的,而且整句翻译需要一定的时间。如果支持直接添加生词的话,感觉会更加贴合生词本的核心含义。

当一个句子中存在多个生词

如题,对于一个英语句子我有好几个生词不认识,但是它只给出了我一个可能不认识的单词,我只能选择no抛弃这个选择另一个,但是目前这个单词也是我不认识的,我不想抛弃他,我想添加多个

能否增加命令行工具,便于跟其他软件集成

比如

aivoc trans "sample text to be translated"

这样可能便于跟类似Popclip这样的软件连接,也方便自动化程序调用。

可以考虑提供选项直接在stdout输出结果,或者提供识别结果的日志,此外,因为整个例句也都存入了,也相当于就是例句。唯一需要处理的是,自动化识别的唯一结果可能不是目标单词,也许可以加个行号或者其他index给这行,补充运行一下这一行就好。

支持使用 no 命令一次选择包括原词在内的多个单词

当前:

  • 用户输入 no 命令后,上一个被添加的生词会被丢弃(加入 known words)
  • 列出 3 个可能的生词,用户可从中挑选 1 个

期望:

  • 列出 3 个可能的生词,加上被丢弃的单词,共 4 个单词,用户可从中挑选多个

支持 Quiz(测试) 模式

  • 支持使用 aivoc quiz 命令进入测试模式
  • 用户选择本次测试的单词数量
  • 通过展示例句,隐藏原单词的方式,测试对单词的掌握程度
  • 最好做的有趣一点

支持使用 no 命令重选单词

当前,如果由 AI 返回的生词并非是用户所想的,用户只能通过不断重复提交原句来获取新的生词。

在交互模式中:

  • 增加 no 特殊指令
  • 接收到 no 指令后,撤回上一次添加的生词(追加到“已掌握单词”中)
  • 重新发送句子,并让 AI 只返回除原词外的另外三个可能得生词
  • 用户通过 Prompt 选择后,将词加入生词本

在翻译时支持流式输出

当前,用户每次输入待翻译文字时,需要等待比较长的时间,等到 API 完全返回后才能看到输出。

但 OpenAI 的 API 实际上支持 stream 输出。借助该特性,工具可以实现当用户输入内容后,即刻开始打印整句翻译内容。

考虑增加 GUI 模式

综合权衡,感觉未来需要做一个 GUI 模式。优点:

  • 上手门槛更低,许多操作用 REPL 模式并不算直观
  • 和划词插件整合后,有一个 GUI 可以方便用户更便捷的操作最近添加的生词

生詞提取存在問題,能否提供手動單詞選擇 option

情況

图片

儅生詞提取為中文時,無法添加單詞至單詞本。


  • [ ] 那能否提供直接選擇 word 的參數? 因爲有些時候 response 太慢了,切換模式還不如我先行選擇。 😢

有時請求時間有點緩慢,如果能提供這個選項,是否會改進導入效果?
難道在 #15 的 GUI 中可以實現嗎?

我之前使用過 obsidian-language-learner,它利用了 i+1 等假説理論進行大量閲讀,類似於一款應用 LingQImmersion Reading

系統

  • Windows 11
  • Python 3.10.8

支持使用 Server 服务端模式启动

本工具如果需要和划词搜索等浏览器插件联动,必须通过 HTTP API 的方式对外提供服务。

  • 增加 aivoc server -d 命令,支持在后台启动服务器
  • 通过 HTTP API 提供翻译并添加生词接口(目前不支持重选)

建议增加英文释义

一点小小的建议:考虑到中文英文并非完全能一一对应释义,尤其是通过中文释义很难辨析两个英文单词的区别。所以建议在生词释义中,增加英文释义(比如google dictionary? 不太确定google的这个服务是不是需要收费)。谢谢!

增加新命令 story:支持故事模式学习单词

当用户输入 story 指令后,AI 会翻译一段包含 6 个生词的小故事供用户阅读。

  • 故事中的生词应该以下划线标注
  • 阅读完成后,键入 enter 打印出所有生词的释义和原例句

增加语言选择

建议增加语言选择, 英语,德语,法语,日语之类的

下载时提示不能找到对应版本

pip install ai-vocabulary-builder 命令始终无法正确运行
我尝试过换源,如下图
image
image

我使用的python版本是 3.7:
image

希望能得到解答,谢谢

开发 Web 主界面:“提取生词”

低保真线框图:

image

预期技术:

  • Vue.js 实现前端
  • FastAPI 实现后端 API
  • 用户执行 aivoc notebook 启动本地服务器,自动打开浏览器进入首页

FileExistsError: [WinError 183] Cannot create a file when that file already exists:

謝謝你解決了 #9 問題,爲了測驗功能完整性,我嘗試手動編輯選擇單詞,但遇到了問題:

当 Enter no 之后

> Enter text: no
"humbly" was discarded, preparing other words...
Traceback (most recent call last):
  File "C:\ProgramData\miniconda3\lib\runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\ProgramData\miniconda3\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "C:\Users\xxx\AppData\Roaming\Python\Python310\Scripts\aivoc.exe\__main__.py", line 7, in <module>
  File "C:\Users\xxx\AppData\Roaming\Python\Python310\site-packages\click\core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "C:\Users\xxx\AppData\Roaming\Python\Python310\site-packages\click\core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "C:\Users\xxx\AppData\Roaming\Python\Python310\site-packages\click\core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "C:\Users\xxx\AppData\Roaming\Python\Python310\site-packages\click\core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "C:\Users\xxx\AppData\Roaming\Python\Python310\site-packages\voc_builder\main.py", line 39, in main
    enter_interactive_mode()
  File "C:\Users\xxx\AppData\Roaming\Python\Python310\site-packages\voc_builder\interactive.py", line 75, in enter_interactive_mode
    handle_cmd_no()
  File "C:\Users\xxx\AppData\Roaming\Python\Python310\site-packages\voc_builder\interactive.py", line 96, in handle_cmd_no
    get_csv_builder().remove_words({ret.word_sample.word})
  File "C:\Users\xxx\AppData\Roaming\Python\Python310\site-packages\voc_builder\builder.py", line 103, in remove_words
    os.rename(new_path, self.file_path)
FileExistsError: [WinError 183] Cannot create a file when that file already exists: 'C:\\Users\\xxx\\aivoc_builder.csv.new' -> 'C:\\Users\\xxx\\aivoc_builder.csv'

系統信息

  • Windows 11 22621
  • Python 3.10.8

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.