Merge pull request #27 from hkgood/feature/custom-language-model-asr
feat(lexicon): add custom ASR language model v1 (Sogou + AI/tech brands)
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"version": "v1",
|
||||
"name": "ai-tech-brands",
|
||||
"generated_at": "2026-07-05T08:00:01.226941+00:00",
|
||||
"locale": "zh-Hans",
|
||||
"entry_count": 749,
|
||||
"seed_file": "Scripts/lexicon/seeds/ai_tech_brands_seed.tsv",
|
||||
"license": "MIT (curated seed; OSGKeyboard contributors)",
|
||||
"categories": {
|
||||
"ai_brand": 133,
|
||||
"ai_model": 31,
|
||||
"ai_platform": 20,
|
||||
"ai_term": 116,
|
||||
"dev_tool": 74,
|
||||
"fintech": 7,
|
||||
"tech_company": 280,
|
||||
"tech_leader": 37,
|
||||
"tech_term": 51
|
||||
},
|
||||
"notes": [
|
||||
"Curated bilingual AI brands, tech companies, terminology, and hot words.",
|
||||
"English canonical forms + Chinese aliases for ASR PhraseCount weighting.",
|
||||
"Aliases expanded at build time; canonical column tracks the primary form.",
|
||||
"English post-processing (casing) remains LLM polish responsibility."
|
||||
],
|
||||
"files": {
|
||||
"phrases": "phrases.tsv"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,750 @@
|
||||
word pinyin source category weight canonical
|
||||
Anthropic ai_tech_seed ai_brand 100 Anthropic
|
||||
anthropic ai_tech_seed ai_brand 100 Anthropic
|
||||
Athropic ai_tech_seed ai_brand 100 Anthropic
|
||||
chat gpt ai_tech_seed ai_brand 100 ChatGPT
|
||||
Chat GPT ai_tech_seed ai_brand 100 ChatGPT
|
||||
ChatGPT ai_tech_seed ai_brand 100 ChatGPT
|
||||
chatgpt ai_tech_seed ai_brand 100 ChatGPT
|
||||
Claude ai_tech_seed ai_brand 100 Claude
|
||||
claude ai_tech_seed ai_brand 100 Claude
|
||||
Claude Opus ai_tech_seed ai_brand 100 Claude
|
||||
Claude Sonnet ai_tech_seed ai_brand 100 Claude
|
||||
deep seek ai_tech_seed ai_brand 100 DeepSeek
|
||||
DeepSeek ai_tech_seed ai_brand 100 DeepSeek
|
||||
deepseek ai_tech_seed ai_brand 100 DeepSeek
|
||||
Deepseek ai_tech_seed ai_brand 100 DeepSeek
|
||||
open ai ai_tech_seed ai_brand 100 OpenAI
|
||||
Open AI ai_tech_seed ai_brand 100 OpenAI
|
||||
OpenAI ai_tech_seed ai_brand 100 OpenAI
|
||||
深度求索 shen du qiu suo ai_tech_seed ai_brand 100 深度求索
|
||||
NVDA ai_tech_seed tech_company 98 Nvidia
|
||||
Nvidia ai_tech_seed tech_company 98 Nvidia
|
||||
nvidia ai_tech_seed tech_company 98 Nvidia
|
||||
英伟达 ai_tech_seed tech_company 98 Nvidia
|
||||
Alibaba ai_tech_seed tech_company 95 Alibaba
|
||||
alibaba ai_tech_seed tech_company 95 Alibaba
|
||||
Alphabet ai_tech_seed tech_company 95 Google
|
||||
Amazon ai_tech_seed tech_company 95 Amazon
|
||||
amazon ai_tech_seed tech_company 95 Amazon
|
||||
Apple ai_tech_seed tech_company 95 Apple
|
||||
apple ai_tech_seed tech_company 95 Apple
|
||||
AWS ai_tech_seed tech_company 95 Amazon
|
||||
Bard ai_tech_seed ai_brand 95 Gemini
|
||||
BYD ai_tech_seed tech_company 95 BYD
|
||||
byd ai_tech_seed tech_company 95 BYD
|
||||
byte dance ai_tech_seed tech_company 95 ByteDance
|
||||
ByteDance ai_tech_seed tech_company 95 ByteDance
|
||||
Bytedance ai_tech_seed tech_company 95 ByteDance
|
||||
Facebook ai_tech_seed tech_company 95 Meta
|
||||
Gemini ai_tech_seed ai_brand 95 Gemini
|
||||
gemini ai_tech_seed ai_brand 95 Gemini
|
||||
Google ai_tech_seed tech_company 95 Google
|
||||
google ai_tech_seed tech_company 95 Google
|
||||
Google Gemini ai_tech_seed ai_brand 95 Gemini
|
||||
GPT ai_tech_seed ai_model 95 GPT
|
||||
gpt-4 ai_tech_seed ai_model 95 GPT
|
||||
GPT-4 ai_tech_seed ai_model 95 GPT
|
||||
GPT-4o ai_tech_seed ai_model 95 GPT
|
||||
gpt4o ai_tech_seed ai_model 95 GPT
|
||||
Huawei ai_tech_seed tech_company 95 Huawei
|
||||
huawei ai_tech_seed tech_company 95 Huawei
|
||||
HW ai_tech_seed tech_company 95 Huawei
|
||||
Kimi ai_tech_seed ai_brand 95 Kimi
|
||||
kimi ai_tech_seed ai_brand 95 Kimi
|
||||
Kimi AI ai_tech_seed ai_brand 95 Kimi
|
||||
Meta ai_tech_seed tech_company 95 Meta
|
||||
meta ai_tech_seed tech_company 95 Meta
|
||||
MI ai_tech_seed tech_company 95 Xiaomi
|
||||
Microsoft ai_tech_seed tech_company 95 Microsoft
|
||||
microsoft ai_tech_seed tech_company 95 Microsoft
|
||||
Moonshot ai_tech_seed ai_brand 95 Kimi
|
||||
Moonshot AI ai_tech_seed ai_brand 95 Kimi
|
||||
MSFT ai_tech_seed tech_company 95 Microsoft
|
||||
Qwen ai_tech_seed ai_brand 95 Qwen
|
||||
qwen ai_tech_seed ai_brand 95 Qwen
|
||||
Qwen2 ai_tech_seed ai_brand 95 Qwen
|
||||
Qwen3 ai_tech_seed ai_brand 95 Qwen
|
||||
RAG ai_tech_seed ai_term 95 RAG
|
||||
rag ai_tech_seed ai_term 95 RAG
|
||||
retrieval augmented generation ai_tech_seed ai_term 95 RAG
|
||||
space x ai_tech_seed tech_company 95 SpaceX
|
||||
Space X ai_tech_seed tech_company 95 SpaceX
|
||||
SpaceX ai_tech_seed tech_company 95 SpaceX
|
||||
Tencent ai_tech_seed tech_company 95 Tencent
|
||||
tencent ai_tech_seed tech_company 95 Tencent
|
||||
Tesla ai_tech_seed tech_company 95 Tesla
|
||||
tesla ai_tech_seed tech_company 95 Tesla
|
||||
Tesla Motors ai_tech_seed tech_company 95 Tesla
|
||||
Transformer ai_tech_seed ai_term 95 Transformer
|
||||
transformer ai_tech_seed ai_term 95 Transformer
|
||||
vibe code ai_tech_seed ai_term 95 vibe coding
|
||||
vibe coding ai_tech_seed ai_term 95 vibe coding
|
||||
Vibe Coding ai_tech_seed ai_term 95 vibe coding
|
||||
Xiaomi ai_tech_seed tech_company 95 Xiaomi
|
||||
xiaomi ai_tech_seed tech_company 95 Xiaomi
|
||||
亚马逊 ai_tech_seed tech_company 95 Amazon
|
||||
千问 ai_tech_seed ai_brand 95 Qwen
|
||||
华为 ai_tech_seed tech_company 95 Huawei
|
||||
变换器 ai_tech_seed ai_term 95 Transformer
|
||||
字节跳动 ai_tech_seed tech_company 95 ByteDance
|
||||
小米 ai_tech_seed tech_company 95 Xiaomi
|
||||
微软 ai_tech_seed tech_company 95 Microsoft
|
||||
检索增强生成 ai_tech_seed ai_term 95 RAG
|
||||
比亚迪 ai_tech_seed tech_company 95 BYD
|
||||
氛围编程 ai_tech_seed ai_term 95 vibe coding
|
||||
脸书 ai_tech_seed tech_company 95 Meta
|
||||
腾讯 ai_tech_seed tech_company 95 Tencent
|
||||
苹果公司 ai_tech_seed tech_company 95 Apple
|
||||
谷歌 ai_tech_seed tech_company 95 Google
|
||||
通义千问 ai_tech_seed ai_brand 95 Qwen
|
||||
阿里 ai_tech_seed tech_company 95 Alibaba
|
||||
阿里巴巴 ai_tech_seed tech_company 95 Alibaba
|
||||
agent ai_tech_seed ai_term 92 智能体
|
||||
Agent ai_tech_seed ai_term 92 智能体
|
||||
AI agent ai_tech_seed ai_term 92 智能体
|
||||
Amazon Web Services ai_tech_seed tech_company 92 AWS
|
||||
aws ai_tech_seed tech_company 92 AWS
|
||||
Baidu ai_tech_seed tech_company 92 Baidu
|
||||
baidu ai_tech_seed tech_company 92 Baidu
|
||||
CATL ai_tech_seed tech_company 92 CATL
|
||||
catl ai_tech_seed tech_company 92 CATL
|
||||
deepseek r1 ai_tech_seed ai_model 92 DeepSeek-R1
|
||||
DeepSeek R1 ai_tech_seed ai_model 92 DeepSeek-R1
|
||||
DeepSeek-R1 ai_tech_seed ai_model 92 DeepSeek-R1
|
||||
Elon Musk ai_tech_seed tech_leader 92 Elon Musk
|
||||
elon musk ai_tech_seed tech_leader 92 Elon Musk
|
||||
GitHub ai_tech_seed tech_company 92 GitHub
|
||||
github ai_tech_seed tech_company 92 GitHub
|
||||
large language model ai_tech_seed ai_term 92 LLM
|
||||
large model ai_tech_seed ai_term 92 大模型
|
||||
LLM ai_tech_seed ai_term 92 LLM
|
||||
llm ai_tech_seed ai_term 92 LLM
|
||||
MCP ai_tech_seed ai_term 92 MCP
|
||||
MCP server ai_tech_seed ai_term 92 MCP
|
||||
model context protocol ai_tech_seed ai_term 92 MCP
|
||||
prompt ai_tech_seed ai_term 92 提示词
|
||||
Prompt ai_tech_seed ai_term 92 提示词
|
||||
R1 ai_tech_seed ai_model 92 DeepSeek-R1
|
||||
tik tok ai_tech_seed tech_company 92 TikTok
|
||||
Tik Tok ai_tech_seed tech_company 92 TikTok
|
||||
TikTok ai_tech_seed tech_company 92 TikTok
|
||||
we chat ai_tech_seed tech_company 92 WeChat
|
||||
WeChat ai_tech_seed tech_company 92 WeChat
|
||||
大模型 da mo xing ai_tech_seed ai_term 92 大模型
|
||||
大语言模型 ai_tech_seed ai_term 92 LLM
|
||||
宁德时代 ai_tech_seed tech_company 92 CATL
|
||||
微信 ai_tech_seed tech_company 92 WeChat
|
||||
抖音海外 ai_tech_seed tech_company 92 TikTok
|
||||
提示词 ti shi ci ai_tech_seed ai_term 92 提示词
|
||||
智能体 zhi neng ti ai_tech_seed ai_term 92 智能体
|
||||
百度 ai_tech_seed tech_company 92 Baidu
|
||||
马斯克 ai_tech_seed tech_leader 92 Elon Musk
|
||||
agentic ai_tech_seed ai_term 90 agent
|
||||
AGI ai_tech_seed ai_term 90 AGI
|
||||
agi ai_tech_seed ai_term 90 AGI
|
||||
alphabet ai_tech_seed tech_company 90 Alphabet
|
||||
Copilot ai_tech_seed ai_brand 90 Copilot
|
||||
copilot ai_tech_seed ai_brand 90 Copilot
|
||||
Cursor ai_tech_seed dev_tool 90 Cursor
|
||||
cursor ai ai_tech_seed dev_tool 90 Cursor
|
||||
Cursor AI ai_tech_seed dev_tool 90 Cursor
|
||||
deepseek v3 ai_tech_seed ai_model 90 DeepSeek-V3
|
||||
DeepSeek V3 ai_tech_seed ai_model 90 DeepSeek-V3
|
||||
DeepSeek-V3 ai_tech_seed ai_model 90 DeepSeek-V3
|
||||
DJI ai_tech_seed tech_company 90 DJI
|
||||
dji ai_tech_seed tech_company 90 DJI
|
||||
dou yin ai_tech_seed tech_company 90 Douyin
|
||||
Doubao ai_tech_seed ai_brand 90 豆包
|
||||
doubao ai_tech_seed ai_brand 90 豆包
|
||||
Douyin ai_tech_seed tech_company 90 Douyin
|
||||
embedding ai_tech_seed ai_term 90 embedding
|
||||
embeddings ai_tech_seed ai_term 90 embedding
|
||||
ERNIE ai_tech_seed ai_brand 90 文心一言
|
||||
Ernie ai_tech_seed ai_brand 90 文心一言
|
||||
fine tuning ai_tech_seed ai_term 90 微调
|
||||
fine-tuning ai_tech_seed ai_term 90 微调
|
||||
GitHub Copilot ai_tech_seed ai_brand 90 Copilot
|
||||
GLM ai_tech_seed ai_brand 90 GLM
|
||||
glm ai_tech_seed ai_brand 90 GLM
|
||||
GLM-4 ai_tech_seed ai_brand 90 GLM
|
||||
GLM-5 ai_tech_seed ai_brand 90 GLM
|
||||
Jensen Huang ai_tech_seed tech_leader 90 Jensen Huang
|
||||
jensen huang ai_tech_seed tech_leader 90 Jensen Huang
|
||||
k8s ai_tech_seed dev_tool 90 Kubernetes
|
||||
K8s ai_tech_seed dev_tool 90 Kubernetes
|
||||
Kubernetes ai_tech_seed dev_tool 90 Kubernetes
|
||||
kubernetes ai_tech_seed dev_tool 90 Kubernetes
|
||||
Lei Jun ai_tech_seed tech_leader 90 雷军
|
||||
lei jun ai_tech_seed tech_leader 90 Lei Jun
|
||||
Li Auto ai_tech_seed tech_company 90 Li Auto
|
||||
li auto ai_tech_seed tech_company 90 Li Auto
|
||||
Llama ai_tech_seed ai_model 90 Llama
|
||||
llama ai_tech_seed ai_model 90 Llama
|
||||
LLaMA ai_tech_seed ai_model 90 Llama
|
||||
Llama 3 ai_tech_seed ai_model 90 Llama
|
||||
Llama 4 ai_tech_seed ai_model 90 Llama
|
||||
LoRA ai_tech_seed ai_term 90 LoRA
|
||||
lora ai_tech_seed ai_term 90 LoRA
|
||||
Microsoft Copilot ai_tech_seed ai_brand 90 Copilot
|
||||
NIO ai_tech_seed tech_company 90 NIO
|
||||
nio ai_tech_seed tech_company 90 NIO
|
||||
prompt engineering ai_tech_seed ai_term 90 prompt
|
||||
Steve Jobs ai_tech_seed tech_leader 90 乔布斯
|
||||
steve jobs ai_tech_seed tech_leader 90 Steve Jobs
|
||||
TSMC ai_tech_seed tech_company 90 TSMC
|
||||
tsmc ai_tech_seed tech_company 90 TSMC
|
||||
X Peng ai_tech_seed tech_company 90 XPeng
|
||||
XPeng ai_tech_seed tech_company 90 XPeng
|
||||
xpeng ai_tech_seed tech_company 90 XPeng
|
||||
Zhipu ai_tech_seed ai_brand 90 GLM
|
||||
乔布斯 qiao bu si ai_tech_seed tech_leader 90 乔布斯
|
||||
低秩适配 ai_tech_seed ai_term 90 LoRA
|
||||
台积电 ai_tech_seed tech_company 90 TSMC
|
||||
大疆 ai_tech_seed tech_company 90 DJI
|
||||
小鹏汽车 ai_tech_seed tech_company 90 XPeng
|
||||
嵌入 ai_tech_seed ai_term 90 embedding
|
||||
微调 wei tiao ai_tech_seed ai_term 90 微调
|
||||
抖音 ai_tech_seed tech_company 90 Douyin
|
||||
文心一言 wen xin yi yan ai_tech_seed ai_brand 90 文心一言
|
||||
智谱 ai_tech_seed ai_brand 90 GLM
|
||||
月之暗面 yue zhi an mian ai_tech_seed ai_brand 90 月之暗面
|
||||
理想 ai_tech_seed tech_company 90 Li Auto
|
||||
理想汽车 ai_tech_seed tech_company 90 Li Auto
|
||||
蔚来 ai_tech_seed tech_company 90 NIO
|
||||
豆包 dou bao ai_tech_seed ai_brand 90 豆包
|
||||
通用人工智能 ai_tech_seed ai_term 90 AGI
|
||||
雷军 lei jun ai_tech_seed tech_leader 90 雷军
|
||||
黄仁勋 ai_tech_seed tech_leader 90 Jensen Huang
|
||||
agentic AI ai_tech_seed ai_term 88 agentic
|
||||
AIGC ai_tech_seed ai_term 88 AIGC
|
||||
aigc ai_tech_seed ai_term 88 AIGC
|
||||
Alipay ai_tech_seed tech_company 88 Ant Group
|
||||
alipay ai_tech_seed tech_company 88 Alipay
|
||||
AMD ai_tech_seed tech_company 88 AMD
|
||||
amd ai_tech_seed tech_company 88 AMD
|
||||
Ant Group ai_tech_seed tech_company 88 Ant Group
|
||||
ant group ai_tech_seed tech_company 88 Ant Group
|
||||
Bilibili ai_tech_seed tech_company 88 Bilibili
|
||||
bilibili ai_tech_seed tech_company 88 Bilibili
|
||||
B站 ai_tech_seed tech_company 88 Bilibili
|
||||
chain of thought ai_tech_seed ai_term 88 chain of thought
|
||||
chain-of-thought ai_tech_seed ai_term 88 chain of thought
|
||||
context window ai_tech_seed ai_term 88 上下文窗口
|
||||
deep mind ai_tech_seed ai_brand 88 DeepMind
|
||||
DeepMind ai_tech_seed ai_brand 88 DeepMind
|
||||
Docker ai_tech_seed tech_company 88 Docker
|
||||
docker ai_tech_seed tech_company 88 Docker
|
||||
dou bao ai_tech_seed ai_brand 88 Doubao
|
||||
ernie ai_tech_seed ai_brand 88 ERNIE
|
||||
function calling ai_tech_seed ai_term 88 function calling
|
||||
gen ai ai_tech_seed ai_term 88 GenAI
|
||||
GenAI ai_tech_seed ai_term 88 GenAI
|
||||
github copilot ai_tech_seed ai_brand 88 GitHub Copilot
|
||||
Google DeepMind ai_tech_seed ai_brand 88 DeepMind
|
||||
GPU ai_tech_seed tech_term 88 GPU
|
||||
gpu ai_tech_seed tech_term 88 GPU
|
||||
Grok ai_tech_seed ai_brand 88 xAI
|
||||
hallucination ai_tech_seed ai_term 88 幻觉
|
||||
he xiao peng ai_tech_seed tech_leader 88 He Xiaopeng
|
||||
He Xiaopeng ai_tech_seed tech_leader 88 何小鹏
|
||||
inference ai_tech_seed ai_term 88 推理
|
||||
Intel ai_tech_seed tech_company 88 Intel
|
||||
intel ai_tech_seed tech_company 88 Intel
|
||||
JD ai_tech_seed tech_company 88 JD.com
|
||||
JD.com ai_tech_seed tech_company 88 JD.com
|
||||
jd.com ai_tech_seed tech_company 88 JD.com
|
||||
Lenovo ai_tech_seed tech_company 88 Lenovo
|
||||
lenovo ai_tech_seed tech_company 88 Lenovo
|
||||
Meituan ai_tech_seed tech_company 88 Meituan
|
||||
meituan ai_tech_seed tech_company 88 Meituan
|
||||
mid journey ai_tech_seed ai_brand 88 Midjourney
|
||||
Mid Journey ai_tech_seed ai_brand 88 Midjourney
|
||||
Midjourney ai_tech_seed ai_brand 88 Midjourney
|
||||
mixture of experts ai_tech_seed ai_term 88 MoE
|
||||
MoE ai_tech_seed ai_term 88 MoE
|
||||
moe ai_tech_seed ai_term 88 MoE
|
||||
multimodal ai_tech_seed ai_term 88 多模态
|
||||
o1 ai_tech_seed ai_model 88 o1
|
||||
O1 ai_tech_seed ai_model 88 o1
|
||||
o3 ai_tech_seed ai_model 88 o3
|
||||
O3 ai_tech_seed ai_model 88 o3
|
||||
openai o1 ai_tech_seed ai_model 88 o1
|
||||
openai o3 ai_tech_seed ai_model 88 o3
|
||||
PDD ai_tech_seed tech_company 88 Pinduoduo
|
||||
Perplexity ai_tech_seed ai_brand 88 Perplexity
|
||||
perplexity ai ai_tech_seed ai_brand 88 Perplexity
|
||||
Perplexity AI ai_tech_seed ai_brand 88 Perplexity
|
||||
Pinduoduo ai_tech_seed tech_company 88 Pinduoduo
|
||||
pinduoduo ai_tech_seed tech_company 88 Pinduoduo
|
||||
Py Torch ai_tech_seed dev_tool 88 PyTorch
|
||||
Python ai_tech_seed dev_tool 88 Python
|
||||
python ai_tech_seed dev_tool 88 Python
|
||||
PyTorch ai_tech_seed dev_tool 88 PyTorch
|
||||
pytorch ai_tech_seed dev_tool 88 PyTorch
|
||||
reasoning ai_tech_seed ai_term 88 推理
|
||||
reasoning model ai_tech_seed ai_term 88 reasoning model
|
||||
Sam Altman ai_tech_seed tech_leader 88 Sam Altman
|
||||
sam altman ai_tech_seed tech_leader 88 Sam Altman
|
||||
Samsung ai_tech_seed tech_company 88 Samsung
|
||||
samsung ai_tech_seed tech_company 88 Samsung
|
||||
SMIC ai_tech_seed tech_company 88 SMIC
|
||||
smic ai_tech_seed tech_company 88 SMIC
|
||||
Sora ai_tech_seed ai_brand 88 Sora
|
||||
sora ai ai_tech_seed ai_brand 88 Sora
|
||||
Sora AI ai_tech_seed ai_brand 88 Sora
|
||||
Stripe ai_tech_seed tech_company 88 Stripe
|
||||
stripe ai_tech_seed tech_company 88 Stripe
|
||||
Taobao ai_tech_seed tech_company 88 Taobao
|
||||
taobao ai_tech_seed tech_company 88 Taobao
|
||||
thinking model ai_tech_seed ai_term 88 reasoning model
|
||||
tool calling ai_tech_seed ai_term 88 function calling
|
||||
Visual Studio Code ai_tech_seed dev_tool 88 VS Code
|
||||
VS Code ai_tech_seed dev_tool 88 VS Code
|
||||
vs code ai_tech_seed dev_tool 88 VS Code
|
||||
VSCode ai_tech_seed dev_tool 88 VS Code
|
||||
x ai ai_tech_seed ai_brand 88 xAI
|
||||
xAI ai_tech_seed ai_brand 88 xAI
|
||||
zhipu ai_tech_seed ai_brand 88 Zhipu AI
|
||||
Zhipu AI ai_tech_seed ai_brand 88 智谱
|
||||
三星 ai_tech_seed tech_company 88 Samsung
|
||||
上下文窗口 shang xia wen chuang kou ai_tech_seed ai_term 88 上下文窗口
|
||||
中芯国际 ai_tech_seed tech_company 88 SMIC
|
||||
京东 ai_tech_seed tech_company 88 JD.com
|
||||
何小鹏 he xiao peng ai_tech_seed tech_leader 88 何小鹏
|
||||
哔哩哔哩 ai_tech_seed tech_company 88 Bilibili
|
||||
多模态 duo mo tai ai_tech_seed ai_term 88 多模态
|
||||
山姆奥特曼 ai_tech_seed tech_leader 88 Sam Altman
|
||||
工具调用 ai_tech_seed ai_term 88 function calling
|
||||
幻觉 huan jue ai_tech_seed ai_term 88 幻觉
|
||||
思维链 ai_tech_seed ai_term 88 chain of thought
|
||||
拼多多 ai_tech_seed tech_company 88 Pinduoduo
|
||||
推理 tui li ai_tech_seed ai_term 88 推理
|
||||
推理模型 ai_tech_seed ai_term 88 reasoning model
|
||||
支付宝 ai_tech_seed tech_company 88 Alipay
|
||||
淘宝 ai_tech_seed tech_company 88 Taobao
|
||||
混合专家 ai_tech_seed ai_term 88 MoE
|
||||
生成式AI ai_tech_seed ai_term 88 GenAI
|
||||
生成式人工智能 ai_tech_seed ai_term 88 AIGC
|
||||
美团 ai_tech_seed tech_company 88 Meituan
|
||||
联想 ai_tech_seed tech_company 88 Lenovo
|
||||
英特尔 ai_tech_seed tech_company 88 Intel
|
||||
蚂蚁集团 ai_tech_seed tech_company 88 Ant Group
|
||||
Adobe ai_tech_seed tech_company 85 Adobe
|
||||
adobe ai_tech_seed tech_company 85 Adobe
|
||||
API ai_tech_seed tech_term 85 API
|
||||
api ai_tech_seed tech_term 85 API
|
||||
Arm ai_tech_seed tech_company 85 Arm
|
||||
arm ai_tech_seed tech_company 85 Arm
|
||||
ARM Holdings ai_tech_seed tech_company 85 Arm
|
||||
ASML ai_tech_seed tech_company 85 ASML
|
||||
asml ai_tech_seed tech_company 85 ASML
|
||||
autonomous driving ai_tech_seed tech_term 85 自动驾驶
|
||||
claude opus ai_tech_seed ai_model 85 Opus
|
||||
claude sonnet ai_tech_seed ai_model 85 Sonnet
|
||||
CUDA ai_tech_seed tech_term 85 CUDA
|
||||
cuda ai_tech_seed tech_term 85 CUDA
|
||||
DALL E ai_tech_seed ai_brand 85 DALL-E
|
||||
DALL-E ai_tech_seed ai_brand 85 DALL-E
|
||||
Dall-E ai_tech_seed ai_brand 85 DALL-E
|
||||
dalle ai_tech_seed ai_brand 85 DALL-E
|
||||
Databricks ai_tech_seed tech_company 85 Databricks
|
||||
databricks ai_tech_seed tech_company 85 Databricks
|
||||
diffusion ai_tech_seed ai_term 85 diffusion
|
||||
Figma ai_tech_seed tech_company 85 Figma
|
||||
figma ai_tech_seed tech_company 85 Figma
|
||||
FSD ai_tech_seed tech_term 85 自动驾驶
|
||||
grok ai_tech_seed ai_brand 85 Grok
|
||||
HF ai_tech_seed ai_platform 85 Hugging Face
|
||||
Honor ai_tech_seed tech_company 85 Honor
|
||||
honor ai_tech_seed tech_company 85 Honor
|
||||
Hugging Face ai_tech_seed ai_platform 85 Hugging Face
|
||||
huggingface ai_tech_seed ai_platform 85 Hugging Face
|
||||
HuggingFace ai_tech_seed ai_platform 85 Hugging Face
|
||||
hun yuan ai_tech_seed ai_brand 85 Hunyuan
|
||||
Hunyuan ai_tech_seed ai_brand 85 混元
|
||||
iFlytek ai_tech_seed ai_brand 85 讯飞
|
||||
iflytek ai_tech_seed ai_brand 85 讯飞
|
||||
Kuaishou ai_tech_seed tech_company 85 Kuaishou
|
||||
kuaishou ai_tech_seed tech_company 85 Kuaishou
|
||||
Mark Zuckerberg ai_tech_seed tech_leader 85 Mark Zuckerberg
|
||||
mark zuckerberg ai_tech_seed tech_leader 85 Mark Zuckerberg
|
||||
MiniMax ai_tech_seed ai_brand 85 MiniMax
|
||||
minimax ai_tech_seed ai_brand 85 MiniMax
|
||||
MiniMax AI ai_tech_seed ai_brand 85 MiniMax
|
||||
Mistral ai_tech_seed ai_brand 85 Mistral
|
||||
mistral ai ai_tech_seed ai_brand 85 Mistral
|
||||
Mistral AI ai_tech_seed ai_brand 85 Mistral
|
||||
NetEase ai_tech_seed tech_company 85 NetEase
|
||||
netease ai_tech_seed tech_company 85 NetEase
|
||||
Netflix ai_tech_seed tech_company 85 Netflix
|
||||
netflix ai_tech_seed tech_company 85 Netflix
|
||||
neural link ai_tech_seed tech_company 85 Neuralink
|
||||
Neural Link ai_tech_seed tech_company 85 Neuralink
|
||||
Neuralink ai_tech_seed tech_company 85 Neuralink
|
||||
next js ai_tech_seed dev_tool 85 Next.js
|
||||
Next.js ai_tech_seed dev_tool 85 Next.js
|
||||
nextjs ai_tech_seed dev_tool 85 Next.js
|
||||
NextJS ai_tech_seed dev_tool 85 Next.js
|
||||
Oppo ai_tech_seed tech_company 85 Oppo
|
||||
oppo ai_tech_seed tech_company 85 Oppo
|
||||
OPPO ai_tech_seed tech_company 85 Oppo
|
||||
Opus ai_tech_seed ai_model 85 Opus
|
||||
Opus 4 ai_tech_seed ai_model 85 Opus
|
||||
Qualcomm ai_tech_seed tech_company 85 Qualcomm
|
||||
qualcomm ai_tech_seed tech_company 85 Qualcomm
|
||||
quantization ai_tech_seed ai_term 85 量化
|
||||
React ai_tech_seed dev_tool 85 React
|
||||
react ai_tech_seed dev_tool 85 React
|
||||
ReactJS ai_tech_seed dev_tool 85 React
|
||||
RLHF ai_tech_seed ai_term 85 RLHF
|
||||
rlhf ai_tech_seed ai_term 85 RLHF
|
||||
Salesforce ai_tech_seed tech_company 85 Salesforce
|
||||
salesforce ai_tech_seed tech_company 85 Salesforce
|
||||
SD ai_tech_seed ai_brand 85 Stable Diffusion
|
||||
Shein ai_tech_seed tech_company 85 Shein
|
||||
shein ai_tech_seed tech_company 85 Shein
|
||||
SHEIN ai_tech_seed tech_company 85 Shein
|
||||
Sonnet ai_tech_seed ai_model 85 Sonnet
|
||||
Sonnet 4 ai_tech_seed ai_model 85 Sonnet
|
||||
Sony ai_tech_seed tech_company 85 Sony
|
||||
sony ai_tech_seed tech_company 85 Sony
|
||||
Spark ai_tech_seed ai_brand 85 星火
|
||||
Stable Diffusion ai_tech_seed ai_brand 85 Stable Diffusion
|
||||
stable diffusion ai_tech_seed ai_brand 85 Stable Diffusion
|
||||
star link ai_tech_seed tech_term 85 Starlink
|
||||
Starlink ai_tech_seed tech_term 85 星链
|
||||
Temu ai_tech_seed tech_company 85 Temu
|
||||
temu ai_tech_seed tech_company 85 Temu
|
||||
Tensor Flow ai_tech_seed dev_tool 85 TensorFlow
|
||||
TensorFlow ai_tech_seed dev_tool 85 TensorFlow
|
||||
tensorflow ai_tech_seed dev_tool 85 TensorFlow
|
||||
Tim Cook ai_tech_seed tech_leader 85 Tim Cook
|
||||
tim cook ai_tech_seed tech_leader 85 Tim Cook
|
||||
Tmall ai_tech_seed tech_company 85 Tmall
|
||||
tmall ai_tech_seed tech_company 85 Tmall
|
||||
tokenizer ai_tech_seed ai_term 85 tokenizer
|
||||
TS ai_tech_seed dev_tool 85 TypeScript
|
||||
TypeScript ai_tech_seed dev_tool 85 TypeScript
|
||||
typescript ai_tech_seed dev_tool 85 TypeScript
|
||||
Uber ai_tech_seed tech_company 85 Uber
|
||||
uber ai_tech_seed tech_company 85 Uber
|
||||
Vivo ai_tech_seed tech_company 85 Vivo
|
||||
vivo ai_tech_seed tech_company 85 Vivo
|
||||
VIVO ai_tech_seed tech_company 85 Vivo
|
||||
vscode ai_tech_seed dev_tool 85 Visual Studio Code
|
||||
Waymo ai_tech_seed tech_company 85 Waymo
|
||||
waymo ai_tech_seed tech_company 85 Waymo
|
||||
William Li ai_tech_seed tech_leader 85 李斌
|
||||
Xcode ai_tech_seed dev_tool 85 Xcode
|
||||
xcode ai_tech_seed dev_tool 85 Xcode
|
||||
Zeekr ai_tech_seed tech_company 85 Zeekr
|
||||
zeekr ai_tech_seed tech_company 85 Zeekr
|
||||
人类反馈强化学习 ai_tech_seed ai_term 85 RLHF
|
||||
分词器 ai_tech_seed ai_term 85 tokenizer
|
||||
天猫 ai_tech_seed tech_company 85 Tmall
|
||||
库克 ai_tech_seed tech_leader 85 Tim Cook
|
||||
快手 ai_tech_seed tech_company 85 Kuaishou
|
||||
扎克伯格 ai_tech_seed tech_leader 85 Mark Zuckerberg
|
||||
扩散模型 ai_tech_seed ai_term 85 diffusion
|
||||
提示工程 ai_tech_seed ai_term 85 prompt engineering
|
||||
星火 xing huo ai_tech_seed ai_brand 85 星火
|
||||
星链 xing lian ai_tech_seed tech_term 85 星链
|
||||
李斌 li bin ai_tech_seed tech_leader 85 李斌
|
||||
极氪 ai_tech_seed tech_company 85 Zeekr
|
||||
梁文锋 liang wen feng ai_tech_seed tech_leader 85 梁文锋
|
||||
混元 hun yuan ai_tech_seed ai_brand 85 混元
|
||||
科大讯飞 ai_tech_seed ai_brand 85 讯飞
|
||||
索尼 ai_tech_seed tech_company 85 Sony
|
||||
网易 ai_tech_seed tech_company 85 NetEase
|
||||
腾讯混元 hun yuan ai_tech_seed ai_brand 85 混元
|
||||
自动驾驶 zi dong jia shi ai_tech_seed tech_term 85 自动驾驶
|
||||
荣耀 ai_tech_seed tech_company 85 Honor
|
||||
讯飞 ai_tech_seed ai_brand 85 讯飞
|
||||
讯飞星火 xing huo ai_tech_seed ai_brand 85 星火
|
||||
量化 liang hua ai_tech_seed ai_term 85 量化
|
||||
高通 ai_tech_seed tech_company 85 Qualcomm
|
||||
01.AI ai_tech_seed ai_brand 82 零一万物
|
||||
AI native ai_tech_seed ai_term 82 AI native
|
||||
AI-native ai_tech_seed ai_term 82 AI native
|
||||
Airbnb ai_tech_seed tech_company 82 Airbnb
|
||||
airbnb ai_tech_seed tech_company 82 Airbnb
|
||||
AI原生 ai_tech_seed ai_term 82 AI native
|
||||
bai chuan ai_tech_seed ai_brand 82 百川
|
||||
Baichuan ai_tech_seed ai_brand 82 百川
|
||||
baichuan ai_tech_seed ai_brand 82 Baichuan
|
||||
blockchain ai_tech_seed tech_term 82 区块链
|
||||
Cloudflare ai_tech_seed tech_company 82 Cloudflare
|
||||
cloudflare ai_tech_seed tech_company 82 Cloudflare
|
||||
Codeium Windsurf ai_tech_seed dev_tool 82 Windsurf
|
||||
Coinbase ai_tech_seed tech_company 82 Coinbase
|
||||
coinbase ai_tech_seed tech_company 82 Coinbase
|
||||
deep research ai_tech_seed ai_term 82 deep research
|
||||
distillation ai_tech_seed ai_term 82 distillation
|
||||
embodied AI ai_tech_seed tech_term 82 具身智能
|
||||
full self driving ai_tech_seed tech_term 82 FSD
|
||||
Geely ai_tech_seed tech_company 82 Geely
|
||||
geely ai_tech_seed tech_company 82 Geely
|
||||
Go ai_tech_seed dev_tool 82 Go
|
||||
golang ai_tech_seed dev_tool 82 Go
|
||||
Golang ai_tech_seed dev_tool 82 Go
|
||||
Groq ai_tech_seed ai_brand 82 Groq
|
||||
groq ai_tech_seed ai_brand 82 Groq
|
||||
GROQ ai_tech_seed ai_brand 82 Groq
|
||||
horizon ai_tech_seed tech_company 82 Horizon Robotics
|
||||
Horizon Robotics ai_tech_seed tech_company 82 Horizon Robotics
|
||||
humanoid robot ai_tech_seed tech_term 82 人形机器人
|
||||
IBM ai_tech_seed tech_company 82 IBM
|
||||
ibm ai_tech_seed tech_company 82 IBM
|
||||
Jeff Bezos ai_tech_seed tech_leader 82 Jeff Bezos
|
||||
jeff bezos ai_tech_seed tech_leader 82 Jeff Bezos
|
||||
ling yi wan wu ai_tech_seed ai_brand 82 零一万物
|
||||
Mongo DB ai_tech_seed tech_company 82 MongoDB
|
||||
MongoDB ai_tech_seed tech_company 82 MongoDB
|
||||
mongodb ai_tech_seed tech_company 82 MongoDB
|
||||
Nintendo ai_tech_seed tech_company 82 Nintendo
|
||||
nintendo ai_tech_seed tech_company 82 Nintendo
|
||||
node js ai_tech_seed dev_tool 82 Node.js
|
||||
Node.js ai_tech_seed dev_tool 82 Node.js
|
||||
nodejs ai_tech_seed dev_tool 82 Node.js
|
||||
NodeJS ai_tech_seed dev_tool 82 Node.js
|
||||
Notion ai_tech_seed tech_company 82 Notion
|
||||
notion ai_tech_seed tech_company 82 Notion
|
||||
NPU ai_tech_seed tech_term 82 NPU
|
||||
npu ai_tech_seed tech_term 82 NPU
|
||||
Ollama ai_tech_seed ai_platform 82 Ollama
|
||||
ollama ai_tech_seed ai_platform 82 Ollama
|
||||
open router ai_tech_seed ai_platform 82 OpenRouter
|
||||
Open Router ai_tech_seed ai_platform 82 OpenRouter
|
||||
open weight ai_tech_seed ai_term 82 open weight
|
||||
open weights ai_tech_seed ai_term 82 open weight
|
||||
OpenRouter ai_tech_seed ai_platform 82 OpenRouter
|
||||
Optimus ai_tech_seed tech_term 82 人形机器人
|
||||
Oracle ai_tech_seed tech_company 82 Oracle
|
||||
oracle ai_tech_seed tech_company 82 Oracle
|
||||
Palantir ai_tech_seed tech_company 82 Palantir
|
||||
palantir ai_tech_seed tech_company 82 Palantir
|
||||
PayPal ai_tech_seed tech_company 82 PayPal
|
||||
paypal ai_tech_seed tech_company 82 PayPal
|
||||
pre-training ai_tech_seed ai_term 82 pretraining
|
||||
pretraining ai_tech_seed ai_term 82 pretraining
|
||||
Redis ai_tech_seed tech_company 82 Redis
|
||||
redis ai_tech_seed tech_company 82 Redis
|
||||
Rust ai_tech_seed dev_tool 82 Rust
|
||||
rust ai_tech_seed dev_tool 82 Rust
|
||||
SaaS ai_tech_seed tech_term 82 SaaS
|
||||
saas ai_tech_seed tech_term 82 SaaS
|
||||
Satya Nadella ai_tech_seed tech_leader 82 Satya Nadella
|
||||
satya nadella ai_tech_seed tech_leader 82 Satya Nadella
|
||||
SDK ai_tech_seed tech_term 82 SDK
|
||||
sdk ai_tech_seed tech_term 82 SDK
|
||||
SenseTime ai_tech_seed tech_company 82 SenseTime
|
||||
sensetime ai_tech_seed tech_company 82 SenseTime
|
||||
Shopify ai_tech_seed tech_company 82 Shopify
|
||||
shopify ai_tech_seed tech_company 82 Shopify
|
||||
Spotify ai_tech_seed tech_company 82 Spotify
|
||||
spotify ai_tech_seed tech_company 82 Spotify
|
||||
step fun ai_tech_seed ai_brand 82 StepFun
|
||||
StepFun ai_tech_seed ai_brand 82 StepFun
|
||||
streaming ai_tech_seed ai_term 82 流式
|
||||
Sundar Pichai ai_tech_seed tech_leader 82 Sundar Pichai
|
||||
sundar pichai ai_tech_seed tech_leader 82 Sundar Pichai
|
||||
swift ui ai_tech_seed dev_tool 82 SwiftUI
|
||||
Swift UI ai_tech_seed dev_tool 82 SwiftUI
|
||||
SwiftUI ai_tech_seed dev_tool 82 SwiftUI
|
||||
vector database ai_tech_seed ai_term 82 vector database
|
||||
Vercel ai_tech_seed tech_company 82 Vercel
|
||||
vercel ai_tech_seed tech_company 82 Vercel
|
||||
Vue ai_tech_seed dev_tool 82 Vue
|
||||
vue ai_tech_seed dev_tool 82 Vue
|
||||
Vue.js ai_tech_seed dev_tool 82 Vue
|
||||
Vue3 ai_tech_seed dev_tool 82 Vue
|
||||
Weibo ai_tech_seed tech_company 82 Weibo
|
||||
weibo ai_tech_seed tech_company 82 Weibo
|
||||
Windsurf ai_tech_seed dev_tool 82 Windsurf
|
||||
windsurf ai_tech_seed dev_tool 82 Windsurf
|
||||
Yi ai_tech_seed ai_brand 82 零一万物
|
||||
人形机器人 ren xing ji qi ren ai_tech_seed tech_term 82 人形机器人
|
||||
任天堂 ai_tech_seed tech_company 82 Nintendo
|
||||
余承东 yu cheng dong ai_tech_seed tech_leader 82 余承东
|
||||
全自动驾驶 ai_tech_seed tech_term 82 FSD
|
||||
具身智能 ju shen zhi neng ai_tech_seed tech_term 82 具身智能
|
||||
区块链 qu kuai lian ai_tech_seed tech_term 82 区块链
|
||||
吉利 ai_tech_seed tech_company 82 Geely
|
||||
向量数据库 ai_tech_seed ai_term 82 vector database
|
||||
商汤 ai_tech_seed tech_company 82 SenseTime
|
||||
地平线 ai_tech_seed tech_company 82 Horizon Robotics
|
||||
开放权重 ai_tech_seed ai_term 82 open weight
|
||||
微博 ai_tech_seed tech_company 82 Weibo
|
||||
流式 liu shi ai_tech_seed ai_term 82 流式
|
||||
深度研究 ai_tech_seed ai_term 82 deep research
|
||||
百川 ai_tech_seed ai_brand 82 百川
|
||||
皮查伊 ai_tech_seed tech_leader 82 Sundar Pichai
|
||||
知识蒸馏 ai_tech_seed ai_term 82 distillation
|
||||
纳德拉 ai_tech_seed tech_leader 82 Satya Nadella
|
||||
蒸馏 ai_tech_seed ai_term 82 distillation
|
||||
贝索斯 ai_tech_seed tech_leader 82 Jeff Bezos
|
||||
阶跃星辰 ai_tech_seed ai_brand 82 StepFun
|
||||
零一万物 ai_tech_seed ai_brand 82 零一万物
|
||||
预训练 ai_tech_seed ai_term 82 pretraining
|
||||
01 ai ai_tech_seed ai_brand 80 01.AI
|
||||
Atlassian ai_tech_seed tech_company 80 Atlassian
|
||||
atlassian ai_tech_seed tech_company 80 Atlassian
|
||||
Broadcom ai_tech_seed tech_company 80 Broadcom
|
||||
broadcom ai_tech_seed tech_company 80 Broadcom
|
||||
Canva ai_tech_seed tech_company 80 Canva
|
||||
canva ai_tech_seed tech_company 80 Canva
|
||||
Codeium ai_tech_seed ai_brand 80 Codeium
|
||||
codeium ai_tech_seed ai_brand 80 Codeium
|
||||
Cohere ai_tech_seed ai_brand 80 Cohere
|
||||
cohere ai_tech_seed ai_brand 80 Cohere
|
||||
computer use ai_tech_seed ai_term 80 computer use
|
||||
computer-use ai_tech_seed ai_term 80 computer use
|
||||
Confluence ai_tech_seed tech_company 80 Atlassian
|
||||
Discord ai_tech_seed tech_company 80 Discord
|
||||
discord ai_tech_seed tech_company 80 Discord
|
||||
eleven labs ai_tech_seed ai_brand 80 ElevenLabs
|
||||
Eleven Labs ai_tech_seed ai_brand 80 ElevenLabs
|
||||
ElevenLabs ai_tech_seed ai_brand 80 ElevenLabs
|
||||
Firebase ai_tech_seed tech_company 80 Firebase
|
||||
firebase ai_tech_seed tech_company 80 Firebase
|
||||
GitLab ai_tech_seed tech_company 80 GitLab
|
||||
gitlab ai_tech_seed tech_company 80 GitLab
|
||||
Horizon ai_tech_seed tech_company 80 地平线
|
||||
Jira ai_tech_seed tech_company 80 Atlassian
|
||||
lang chain ai_tech_seed ai_platform 80 LangChain
|
||||
LangChain ai_tech_seed ai_platform 80 LangChain
|
||||
Langchain ai_tech_seed ai_platform 80 LangChain
|
||||
low altitude economy ai_tech_seed tech_term 80 低空经济
|
||||
Megvii ai_tech_seed tech_company 80 Megvii
|
||||
megvii ai_tech_seed tech_company 80 Megvii
|
||||
on device ai ai_tech_seed ai_term 80 on-device AI
|
||||
on-device AI ai_tech_seed ai_term 80 on-device AI
|
||||
optimus ai_tech_seed tech_term 80 Optimus
|
||||
Reddit ai_tech_seed tech_company 80 Reddit
|
||||
reddit ai_tech_seed tech_company 80 Reddit
|
||||
Rivian ai_tech_seed tech_company 80 Rivian
|
||||
rivian ai_tech_seed tech_company 80 Rivian
|
||||
Runway ai_tech_seed ai_brand 80 Runway
|
||||
runway ai ai_tech_seed ai_brand 80 Runway
|
||||
Runway ML ai_tech_seed ai_brand 80 Runway
|
||||
silicon flow ai_tech_seed ai_platform 80 SiliconFlow
|
||||
Silicon Flow ai_tech_seed ai_platform 80 SiliconFlow
|
||||
SiliconFlow ai_tech_seed ai_platform 80 SiliconFlow
|
||||
Slack ai_tech_seed tech_company 80 Slack
|
||||
slack ai_tech_seed tech_company 80 Slack
|
||||
SLM ai_tech_seed ai_term 80 SLM
|
||||
slm ai_tech_seed ai_term 80 SLM
|
||||
Snowflake ai_tech_seed tech_company 80 Snowflake
|
||||
snowflake ai_tech_seed tech_company 80 Snowflake
|
||||
Supabase ai_tech_seed tech_company 80 Supabase
|
||||
supabase ai_tech_seed tech_company 80 Supabase
|
||||
swe bench ai_tech_seed ai_term 80 SWE-bench
|
||||
SWE bench ai_tech_seed ai_term 80 SWE-bench
|
||||
SWE-bench ai_tech_seed ai_term 80 SWE-bench
|
||||
Terraform ai_tech_seed tech_company 80 Terraform
|
||||
terraform ai_tech_seed tech_company 80 Terraform
|
||||
TPU ai_tech_seed tech_term 80 TPU
|
||||
tpu ai_tech_seed tech_term 80 TPU
|
||||
vLLM ai_tech_seed ai_platform 80 vLLM
|
||||
vllm ai_tech_seed ai_platform 80 vLLM
|
||||
VLLM ai_tech_seed ai_platform 80 vLLM
|
||||
Zoom ai_tech_seed tech_company 80 Zoom
|
||||
zoom ai_tech_seed tech_company 80 Zoom
|
||||
低空经济 di kong jing ji ai_tech_seed tech_term 80 低空经济
|
||||
小语言模型 ai_tech_seed ai_term 80 SLM
|
||||
擎天柱 ai_tech_seed tech_term 80 Optimus
|
||||
旷视 ai_tech_seed tech_company 80 Megvii
|
||||
电脑使用 ai_tech_seed ai_term 80 computer use
|
||||
端侧AI ai_tech_seed ai_term 80 on-device AI
|
||||
benchmark ai_tech_seed ai_term 78 benchmark
|
||||
Block ai_tech_seed fintech 78 Block
|
||||
block ai_tech_seed fintech 78 Block
|
||||
Character AI ai_tech_seed ai_brand 78 Character AI
|
||||
character.ai ai_tech_seed ai_brand 78 Character AI
|
||||
Character.AI ai_tech_seed ai_brand 78 Character AI
|
||||
Cline ai_tech_seed dev_tool 78 Cline
|
||||
cline ai_tech_seed dev_tool 78 Cline
|
||||
Cline AI ai_tech_seed dev_tool 78 Cline
|
||||
Datadog ai_tech_seed tech_company 78 Datadog
|
||||
datadog ai_tech_seed tech_company 78 Datadog
|
||||
Elastic ai_tech_seed tech_company 78 Elastic
|
||||
elastic ai_tech_seed tech_company 78 Elastic
|
||||
Elasticsearch ai_tech_seed tech_company 78 Elastic
|
||||
go global ai_tech_seed tech_term 78 出海
|
||||
Great Wall ai_tech_seed tech_company 78 Great Wall
|
||||
great wall ai_tech_seed tech_company 78 Great Wall
|
||||
Jupyter ai_tech_seed dev_tool 78 Jupyter
|
||||
jupyter ai_tech_seed dev_tool 78 Jupyter
|
||||
Jupyter Notebook ai_tech_seed dev_tool 78 Jupyter
|
||||
Linear ai_tech_seed tech_company 78 Linear
|
||||
linear ai_tech_seed dev_tool 78 Linear
|
||||
linear app ai_tech_seed tech_company 78 Linear
|
||||
Lucid ai_tech_seed tech_company 78 Lucid
|
||||
lucid motors ai_tech_seed tech_company 78 Lucid
|
||||
Lucid Motors ai_tech_seed tech_company 78 Lucid
|
||||
metaverse ai_tech_seed tech_term 78 元宇宙
|
||||
MiniCPM ai_tech_seed ai_brand 78 面壁智能
|
||||
Postman ai_tech_seed dev_tool 78 Postman
|
||||
postman ai_tech_seed dev_tool 78 Postman
|
||||
RAG pipeline ai_tech_seed ai_term 78 RAG pipeline
|
||||
rag pipeline ai_tech_seed ai_term 78 RAG pipeline
|
||||
remote work ai_tech_seed tech_term 78 远程办公
|
||||
Replicate ai_tech_seed ai_platform 78 Replicate
|
||||
replicate ai_tech_seed ai_platform 78 Replicate
|
||||
Replit ai_tech_seed dev_tool 78 Replit
|
||||
replit ai_tech_seed dev_tool 78 Replit
|
||||
Replit Agent ai_tech_seed dev_tool 78 Replit
|
||||
robin hood ai_tech_seed fintech 78 Robinhood
|
||||
Robin Hood ai_tech_seed fintech 78 Robinhood
|
||||
Robinhood ai_tech_seed fintech 78 Robinhood
|
||||
service now ai_tech_seed tech_company 78 ServiceNow
|
||||
ServiceNow ai_tech_seed tech_company 78 ServiceNow
|
||||
Square ai_tech_seed fintech 78 Block
|
||||
square ai_tech_seed fintech 78 Block
|
||||
Twilio ai_tech_seed tech_company 78 Twilio
|
||||
twilio ai_tech_seed tech_company 78 Twilio
|
||||
Visa ai_tech_seed tech_company 78 Visa
|
||||
visa ai_tech_seed tech_company 78 Visa
|
||||
Web 3 ai_tech_seed tech_term 78 Web3
|
||||
Web3 ai_tech_seed tech_term 78 Web3
|
||||
web3 ai_tech_seed tech_term 78 Web3
|
||||
元宇宙 yuan yu zhou ai_tech_seed tech_term 78 元宇宙
|
||||
全球化 chu hai ai_tech_seed tech_term 78 出海
|
||||
出海 chu hai ai_tech_seed tech_term 78 出海
|
||||
基准测试 ai_tech_seed ai_term 78 benchmark
|
||||
远程办公 yuan cheng ban gong ai_tech_seed tech_term 78 远程办公
|
||||
长城汽车 ai_tech_seed tech_company 78 Great Wall
|
||||
面壁智能 mian bi zhi neng ai_tech_seed ai_brand 78 面壁智能
|
||||
Aider ai_tech_seed ai_brand 75 Aider
|
||||
aider ai_tech_seed ai_brand 75 Aider
|
||||
Bitbucket ai_tech_seed tech_company 75 Bitbucket
|
||||
bitbucket ai_tech_seed tech_company 75 Bitbucket
|
||||
circle ci ai_tech_seed dev_tool 75 CircleCI
|
||||
Circle CI ai_tech_seed dev_tool 75 CircleCI
|
||||
CircleCI ai_tech_seed dev_tool 75 CircleCI
|
||||
digital nomad ai_tech_seed tech_term 75 数字游民
|
||||
involution ai_tech_seed tech_term 75 内卷
|
||||
jailbreak ai_tech_seed ai_term 75 jailbreak
|
||||
Jenkins ai_tech_seed dev_tool 75 Jenkins
|
||||
jenkins ai_tech_seed dev_tool 75 Jenkins
|
||||
minicpm ai_tech_seed ai_model 75 MiniCPM
|
||||
Notion AI ai_tech_seed ai_brand 75 Notion AI
|
||||
notion ai ai_tech_seed ai_brand 75 Notion AI
|
||||
Obsidian ai_tech_seed dev_tool 75 Obsidian
|
||||
obsidian ai_tech_seed dev_tool 75 Obsidian
|
||||
Pika ai_tech_seed ai_brand 75 Pika
|
||||
pika ai ai_tech_seed ai_brand 75 Pika
|
||||
Pika Labs ai_tech_seed ai_brand 75 Pika
|
||||
Raycast ai_tech_seed dev_tool 75 Raycast
|
||||
raycast ai_tech_seed dev_tool 75 Raycast
|
||||
Warp ai_tech_seed dev_tool 75 Warp
|
||||
warp terminal ai_tech_seed dev_tool 75 Warp
|
||||
内卷 nei juan ai_tech_seed tech_term 75 内卷
|
||||
数字游民 shu zi you min ai_tech_seed tech_term 75 数字游民
|
||||
越狱 ai_tech_seed ai_term 75 jailbreak
|
||||
面壁 ai_tech_seed ai_model 75 MiniCPM
|
||||
lying flat ai_tech_seed tech_term 72 躺平
|
||||
side hustle ai_tech_seed tech_term 72 副业
|
||||
副业 fu ye ai_tech_seed tech_term 72 副业
|
||||
躺平 tang ping ai_tech_seed tech_term 72 躺平
|
||||
|
Binary file not shown.
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"bin_bytes" : 1976593,
|
||||
"bin_file" : "OSGKeyboardCLM.bin",
|
||||
"export_seconds" : 0.28117799758911133,
|
||||
"generated_at" : "2026-07-05T08:19:00Z",
|
||||
"identifier" : "com.osgkeyboard.custom-lm.v1",
|
||||
"locale" : "zh_CN",
|
||||
"phrase_count" : 129403,
|
||||
"sources" : {
|
||||
"ai_tech_seed" : 749,
|
||||
"sogou_v1" : 128743
|
||||
},
|
||||
"version" : "1.0.0"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"client_identifier" : "com.osgkeyboard.custom-lm.v1",
|
||||
"configuration" : {
|
||||
"language_model" : "\/Users\/rocky\/Documents\/OSGKeyboard\/OSGKeyboard\/Resources\/CustomLanguageModel\/v1\/compiled\/LM",
|
||||
"vocabulary" : "\/Users\/rocky\/Documents\/OSGKeyboard\/OSGKeyboard\/Resources\/CustomLanguageModel\/v1\/compiled\/Vocab",
|
||||
"weight" : null
|
||||
},
|
||||
"generated_at" : "2026-07-05T08:24:55Z",
|
||||
"input_bin" : "OSGKeyboardCLM.bin",
|
||||
"input_bin_bytes" : 1976593,
|
||||
"language_model" : "LM",
|
||||
"language_model_bytes" : 6398585,
|
||||
"prepare_seconds" : 28.565693974494934,
|
||||
"vocabulary" : "Vocab",
|
||||
"vocabulary_bytes" : 178816
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"version": "v1",
|
||||
"generated_at": "2026-07-05T07:47:30.162461+00:00",
|
||||
"locale": "zh-Hans",
|
||||
"entry_count": 128743,
|
||||
"sources": [
|
||||
{
|
||||
"key": "computer_terms",
|
||||
"label": "计算机词汇大全【官方推荐】",
|
||||
"weight": 5,
|
||||
"raw_count": 10300
|
||||
},
|
||||
{
|
||||
"key": "network_slang_local",
|
||||
"label": "网络流行新词.scel",
|
||||
"weight": 3,
|
||||
"raw_count": 118599
|
||||
},
|
||||
{
|
||||
"key": "sogou_popular_accumulated",
|
||||
"label": "SogouPopularDict accumulated",
|
||||
"weight": 1,
|
||||
"raw_count": 118602
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Sogou-derived data is for internal ASR experimentation only.",
|
||||
"PhraseCount weights map to SFCustomLanguageModelData relative frequencies.",
|
||||
"Higher source weight wins on duplicate words."
|
||||
],
|
||||
"files": {
|
||||
"phrases": "phrases.tsv"
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Executable
+9
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
# Full offline CLM pipeline on macOS:
|
||||
# 1) export .bin from TSVs
|
||||
# 2) prepare compiled LM + Vocab
|
||||
set -euo pipefail
|
||||
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
||||
cd "$ROOT"
|
||||
"$ROOT/Scripts/lexicon/build-clm-bin.sh" "$@"
|
||||
"$ROOT/Scripts/lexicon/prepare-clm.sh" "$@"
|
||||
Executable
+6
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
# Build SFCustomLanguageModelData .bin on macOS (requires Speech framework).
|
||||
set -euo pipefail
|
||||
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
||||
cd "$ROOT"
|
||||
exec swift "$ROOT/Scripts/lexicon/export_clm.swift" "$@"
|
||||
@@ -0,0 +1,177 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Build the curated AI / tech / brand seed lexicon for OSGKeyboard ASR.
|
||||
|
||||
Reads Scripts/lexicon/seeds/ai_tech_brands_seed.tsv and emits:
|
||||
OSGKeyboard/Resources/CustomLanguageModel/ai-tech-brands/v1/phrases.tsv
|
||||
OSGKeyboard/Resources/CustomLanguageModel/ai-tech-brands/v1/manifest.json
|
||||
|
||||
Each seed row may declare pipe-separated aliases; aliases are expanded into
|
||||
additional phrase rows sharing the same category and weight.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import sys
|
||||
from collections import Counter
|
||||
from dataclasses import dataclass
|
||||
from datetime import datetime, timezone
|
||||
from pathlib import Path
|
||||
|
||||
REPO_ROOT = Path(__file__).resolve().parents[2]
|
||||
DEFAULT_SEED = REPO_ROOT / "Scripts/lexicon/seeds/ai_tech_brands_seed.tsv"
|
||||
DEFAULT_OUTPUT = REPO_ROOT / "OSGKeyboard/Resources/CustomLanguageModel/ai-tech-brands/v1"
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class SeedRow:
|
||||
word: str
|
||||
pinyin: str
|
||||
aliases: tuple[str, ...]
|
||||
category: str
|
||||
weight: int
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class PhraseRow:
|
||||
word: str
|
||||
pinyin: str
|
||||
source: str
|
||||
category: str
|
||||
weight: int
|
||||
canonical: str
|
||||
|
||||
|
||||
def parse_seed_file(seed_path: Path) -> list[SeedRow]:
|
||||
rows: list[SeedRow] = []
|
||||
with seed_path.open(encoding="utf-8") as handle:
|
||||
for line_number, raw_line in enumerate(handle, start=1):
|
||||
line = raw_line.strip()
|
||||
if not line or line.startswith("#"):
|
||||
continue
|
||||
parts = line.split("\t")
|
||||
if len(parts) < 4:
|
||||
print(f"Warning: skip malformed line {line_number}: {line}", file=sys.stderr)
|
||||
continue
|
||||
word = parts[0].strip()
|
||||
pinyin = parts[1].strip() if len(parts) > 1 else ""
|
||||
aliases_raw = parts[2].strip() if len(parts) > 2 else ""
|
||||
category = parts[3].strip() if len(parts) > 3 else "misc"
|
||||
weight_raw = parts[4].strip() if len(parts) > 4 else "80"
|
||||
if not word:
|
||||
continue
|
||||
aliases = tuple(
|
||||
alias.strip()
|
||||
for alias in aliases_raw.split("|")
|
||||
if alias.strip() and alias.strip() != word
|
||||
)
|
||||
try:
|
||||
weight = int(weight_raw)
|
||||
except ValueError:
|
||||
weight = 80
|
||||
rows.append(
|
||||
SeedRow(
|
||||
word=word,
|
||||
pinyin=pinyin,
|
||||
aliases=aliases,
|
||||
category=category,
|
||||
weight=weight,
|
||||
)
|
||||
)
|
||||
return rows
|
||||
|
||||
|
||||
def expand_rows(seeds: list[SeedRow]) -> list[PhraseRow]:
|
||||
"""Expand canonical + aliases; dedupe by word keeping highest weight."""
|
||||
merged: dict[str, PhraseRow] = {}
|
||||
|
||||
for seed in seeds:
|
||||
candidates = [(seed.word, seed.pinyin, seed.category, seed.weight, seed.word)]
|
||||
for alias in seed.aliases:
|
||||
# Aliases inherit canonical pinyin only when alias is Chinese.
|
||||
alias_pinyin = seed.pinyin if _contains_cjk(alias) else ""
|
||||
candidates.append((alias, alias_pinyin, seed.category, seed.weight, seed.word))
|
||||
|
||||
for word, pinyin, category, weight, canonical in candidates:
|
||||
if not word:
|
||||
continue
|
||||
row = PhraseRow(
|
||||
word=word,
|
||||
pinyin=pinyin,
|
||||
source="ai_tech_seed",
|
||||
category=category,
|
||||
weight=weight,
|
||||
canonical=canonical,
|
||||
)
|
||||
current = merged.get(word)
|
||||
if current is None or row.weight > current.weight:
|
||||
merged[word] = row
|
||||
|
||||
return sorted(merged.values(), key=lambda item: (-item.weight, item.word.lower()))
|
||||
|
||||
|
||||
def _contains_cjk(text: str) -> bool:
|
||||
return any("\u4e00" <= char <= "\u9fff" for char in text)
|
||||
|
||||
|
||||
def write_outputs(phrases: list[PhraseRow], output_dir: Path, seed_path: Path) -> None:
|
||||
output_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
phrases_path = output_dir / "phrases.tsv"
|
||||
with phrases_path.open("w", encoding="utf-8") as handle:
|
||||
handle.write("word\tpinyin\tsource\tcategory\tweight\tcanonical\n")
|
||||
for row in phrases:
|
||||
handle.write(
|
||||
f"{row.word}\t{row.pinyin}\t{row.source}\t{row.category}\t{row.weight}\t{row.canonical}\n"
|
||||
)
|
||||
|
||||
category_counts = Counter(row.category for row in phrases)
|
||||
manifest = {
|
||||
"version": "v1",
|
||||
"name": "ai-tech-brands",
|
||||
"generated_at": datetime.now(timezone.utc).isoformat(),
|
||||
"locale": "zh-Hans",
|
||||
"entry_count": len(phrases),
|
||||
"seed_file": str(seed_path.relative_to(REPO_ROOT)),
|
||||
"license": "MIT (curated seed; OSGKeyboard contributors)",
|
||||
"categories": dict(sorted(category_counts.items())),
|
||||
"notes": [
|
||||
"Curated bilingual AI brands, tech companies, terminology, and hot words.",
|
||||
"English canonical forms + Chinese aliases for ASR PhraseCount weighting.",
|
||||
"Aliases expanded at build time; canonical column tracks the primary form.",
|
||||
"English post-processing (casing) remains LLM polish responsibility.",
|
||||
],
|
||||
"files": {"phrases": phrases_path.name},
|
||||
}
|
||||
manifest_path = output_dir / "manifest.json"
|
||||
manifest_path.write_text(json.dumps(manifest, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
|
||||
|
||||
|
||||
def build(seed_path: Path, output_dir: Path) -> int:
|
||||
if not seed_path.exists():
|
||||
print(f"Missing seed file: {seed_path}", file=sys.stderr)
|
||||
return 1
|
||||
|
||||
seeds = parse_seed_file(seed_path)
|
||||
phrases = expand_rows(seeds)
|
||||
write_outputs(phrases, output_dir, seed_path)
|
||||
|
||||
print(f"Seed rows: {len(seeds)}")
|
||||
print(f"Expanded unique phrases: {len(phrases)}")
|
||||
print(f"Wrote {output_dir / 'phrases.tsv'}")
|
||||
print(f"Wrote {output_dir / 'manifest.json'}")
|
||||
return 0
|
||||
|
||||
|
||||
def main() -> int:
|
||||
parser = argparse.ArgumentParser(description="Build AI/tech brand seed lexicon")
|
||||
parser.add_argument("--seed", type=Path, default=DEFAULT_SEED)
|
||||
parser.add_argument("--output-dir", type=Path, default=DEFAULT_OUTPUT)
|
||||
args = parser.parse_args()
|
||||
return build(args.seed, args.output_dir)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
@@ -0,0 +1,184 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Build OSGKeyboard custom ASR lexicon v1 from Sogou-derived sources.
|
||||
|
||||
Sources (experimentation only — Sogou data is non-commercial):
|
||||
1. ASC8384/SogouPopularDict accumulated pinyin TSV
|
||||
2. Local 计算机词汇大全【官方推荐】.scel
|
||||
3. Local 网络流行新词.scel
|
||||
|
||||
Output:
|
||||
OSGKeyboard/Resources/CustomLanguageModel/v1/phrases.tsv
|
||||
OSGKeyboard/Resources/CustomLanguageModel/v1/manifest.json
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import sys
|
||||
import urllib.request
|
||||
from collections import Counter
|
||||
from dataclasses import dataclass
|
||||
from datetime import datetime, timezone
|
||||
from pathlib import Path
|
||||
|
||||
from scel_parser import get_scel_info, load_pinyin_tsv, parse_scel_file
|
||||
|
||||
REPO_ROOT = Path(__file__).resolve().parents[2]
|
||||
DEFAULT_OUTPUT_DIR = REPO_ROOT / "OSGKeyboard/Resources/CustomLanguageModel/v1"
|
||||
SOGOU_ACCUMULATED_URL = (
|
||||
"https://raw.githubusercontent.com/ASC8384/SogouPopularDict/main/"
|
||||
"data/sogou_network_words_accumulated_pinyin.tsv"
|
||||
)
|
||||
|
||||
DEFAULT_COMPUTER_SCEL = Path("/Users/rocky/Downloads/计算机词汇大全【官方推荐】.scel")
|
||||
DEFAULT_NETWORK_SCEL = Path("/Users/rocky/Downloads/网络流行新词.scel")
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class SourceSpec:
|
||||
key: str
|
||||
label: str
|
||||
weight: int
|
||||
|
||||
|
||||
SOURCES = [
|
||||
SourceSpec("computer_terms", "计算机词汇大全【官方推荐】", weight=5),
|
||||
SourceSpec("network_slang_local", "网络流行新词.scel", weight=3),
|
||||
SourceSpec("sogou_popular_accumulated", "SogouPopularDict accumulated", weight=1),
|
||||
]
|
||||
|
||||
|
||||
def download_accumulated_tsv(destination: Path) -> None:
|
||||
destination.parent.mkdir(parents=True, exist_ok=True)
|
||||
with urllib.request.urlopen(SOGOU_ACCUMULATED_URL, timeout=120) as response:
|
||||
destination.write_bytes(response.read())
|
||||
|
||||
|
||||
@dataclass
|
||||
class LexiconEntry:
|
||||
word: str
|
||||
pinyin: str
|
||||
source: str
|
||||
weight: int
|
||||
|
||||
|
||||
def merge_entries(sources: list[tuple[SourceSpec, list[tuple[str, str]]]]) -> list[LexiconEntry]:
|
||||
merged: dict[str, LexiconEntry] = {}
|
||||
source_counts: Counter[str] = Counter()
|
||||
|
||||
for spec, entries in sources:
|
||||
for word, pinyin in entries:
|
||||
source_counts[spec.key] += 1
|
||||
current = merged.get(word)
|
||||
candidate = LexiconEntry(word=word, pinyin=pinyin, source=spec.key, weight=spec.weight)
|
||||
if current is None or candidate.weight > current.weight:
|
||||
merged[word] = candidate
|
||||
elif current.weight == candidate.weight and not current.pinyin and pinyin:
|
||||
merged[word] = candidate
|
||||
|
||||
return sorted(merged.values(), key=lambda item: (item.weight * -1, item.word))
|
||||
|
||||
|
||||
def write_outputs(entries: list[LexiconEntry], output_dir: Path, source_stats: dict[str, int]) -> None:
|
||||
output_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
phrases_path = output_dir / "phrases.tsv"
|
||||
with phrases_path.open("w", encoding="utf-8") as handle:
|
||||
handle.write("word\tpinyin\tsource\tweight\n")
|
||||
for entry in entries:
|
||||
handle.write(f"{entry.word}\t{entry.pinyin}\t{entry.source}\t{entry.weight}\n")
|
||||
|
||||
manifest = {
|
||||
"version": "v1",
|
||||
"generated_at": datetime.now(timezone.utc).isoformat(),
|
||||
"locale": "zh-Hans",
|
||||
"entry_count": len(entries),
|
||||
"sources": [
|
||||
{
|
||||
"key": spec.key,
|
||||
"label": spec.label,
|
||||
"weight": spec.weight,
|
||||
"raw_count": source_stats.get(spec.key, 0),
|
||||
}
|
||||
for spec in SOURCES
|
||||
],
|
||||
"notes": [
|
||||
"Sogou-derived data is for internal ASR experimentation only.",
|
||||
"PhraseCount weights map to SFCustomLanguageModelData relative frequencies.",
|
||||
"Higher source weight wins on duplicate words.",
|
||||
],
|
||||
"files": {
|
||||
"phrases": phrases_path.name,
|
||||
},
|
||||
}
|
||||
|
||||
manifest_path = output_dir / "manifest.json"
|
||||
manifest_path.write_text(json.dumps(manifest, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
|
||||
|
||||
|
||||
def build(
|
||||
*,
|
||||
computer_scel: Path,
|
||||
network_scel: Path,
|
||||
output_dir: Path,
|
||||
skip_download: bool,
|
||||
) -> int:
|
||||
cache_dir = REPO_ROOT / ".cache/lexicon"
|
||||
cache_dir.mkdir(parents=True, exist_ok=True)
|
||||
accumulated_tsv = cache_dir / "sogou_network_words_accumulated_pinyin.tsv"
|
||||
|
||||
if not skip_download and not accumulated_tsv.exists():
|
||||
print(f"Downloading {SOGOU_ACCUMULATED_URL} …")
|
||||
download_accumulated_tsv(accumulated_tsv)
|
||||
elif not accumulated_tsv.exists():
|
||||
print(f"Missing accumulated TSV: {accumulated_tsv}", file=sys.stderr)
|
||||
return 1
|
||||
|
||||
if not computer_scel.exists():
|
||||
print(f"Missing computer scel: {computer_scel}", file=sys.stderr)
|
||||
return 1
|
||||
if not network_scel.exists():
|
||||
print(f"Missing network scel: {network_scel}", file=sys.stderr)
|
||||
return 1
|
||||
|
||||
computer_info = get_scel_info(computer_scel)
|
||||
network_info = get_scel_info(network_scel)
|
||||
print(f"Computer dict: {computer_info.name} ({computer_info.word_count} header count)")
|
||||
print(f"Network dict: {network_info.name} ({network_info.word_count} header count)")
|
||||
|
||||
loaded_sources: list[tuple[SourceSpec, list[tuple[str, str]]]] = [
|
||||
(SOURCES[0], parse_scel_file(computer_scel)),
|
||||
(SOURCES[1], parse_scel_file(network_scel)),
|
||||
(SOURCES[2], load_pinyin_tsv(accumulated_tsv)),
|
||||
]
|
||||
|
||||
source_stats = {spec.key: len(entries) for spec, entries in loaded_sources}
|
||||
merged = merge_entries(loaded_sources)
|
||||
write_outputs(merged, output_dir, source_stats)
|
||||
|
||||
print(f"Raw counts: {source_stats}")
|
||||
print(f"Merged unique entries: {len(merged)}")
|
||||
print(f"Wrote {output_dir / 'phrases.tsv'}")
|
||||
print(f"Wrote {output_dir / 'manifest.json'}")
|
||||
return 0
|
||||
|
||||
|
||||
def main() -> int:
|
||||
parser = argparse.ArgumentParser(description="Build OSGKeyboard custom ASR lexicon v1")
|
||||
parser.add_argument("--computer-scel", type=Path, default=DEFAULT_COMPUTER_SCEL)
|
||||
parser.add_argument("--network-scel", type=Path, default=DEFAULT_NETWORK_SCEL)
|
||||
parser.add_argument("--output-dir", type=Path, default=DEFAULT_OUTPUT_DIR)
|
||||
parser.add_argument("--skip-download", action="store_true")
|
||||
args = parser.parse_args()
|
||||
return build(
|
||||
computer_scel=args.computer_scel,
|
||||
network_scel=args.network_scel,
|
||||
output_dir=args.output_dir,
|
||||
skip_download=args.skip_download,
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
@@ -0,0 +1,272 @@
|
||||
#!/usr/bin/env swift
|
||||
//
|
||||
// export_clm.swift
|
||||
// OSGKeyboard · offline SFCustomLanguageModelData exporter (macOS 14+)
|
||||
//
|
||||
// Reads merged phrase TSVs and writes a .bin training asset via Speech framework.
|
||||
// Usage:
|
||||
// swift Scripts/lexicon/export_clm.swift
|
||||
// swift Scripts/lexicon/export_clm.swift --max-entries 30000
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import Speech
|
||||
|
||||
// MARK: - CLI
|
||||
|
||||
struct CLIOptions {
|
||||
var sogouTSV: URL
|
||||
var aiTechTSV: URL
|
||||
var outputBin: URL
|
||||
var localeID: String
|
||||
var modelID: String
|
||||
var modelVersion: String
|
||||
var maxEntries: Int?
|
||||
|
||||
static func parse() -> CLIOptions {
|
||||
let repoRoot = URL(fileURLWithPath: #filePath)
|
||||
.deletingLastPathComponent()
|
||||
.deletingLastPathComponent()
|
||||
.deletingLastPathComponent()
|
||||
|
||||
var sogou = repoRoot.appendingPathComponent(
|
||||
"OSGKeyboard/Resources/CustomLanguageModel/v1/phrases.tsv"
|
||||
)
|
||||
var aiTech = repoRoot.appendingPathComponent(
|
||||
"OSGKeyboard/Resources/CustomLanguageModel/ai-tech-brands/v1/phrases.tsv"
|
||||
)
|
||||
var output = repoRoot.appendingPathComponent(
|
||||
"OSGKeyboard/Resources/CustomLanguageModel/v1/OSGKeyboardCLM.bin"
|
||||
)
|
||||
var localeID = "zh_CN"
|
||||
var modelID = "com.osgkeyboard.custom-lm.v1"
|
||||
var modelVersion = "1.0.0"
|
||||
var maxEntries: Int?
|
||||
|
||||
var iterator = CommandLine.arguments.dropFirst().makeIterator()
|
||||
while let flag = iterator.next() {
|
||||
switch flag {
|
||||
case "--sogou-tsv":
|
||||
sogou = URL(fileURLWithPath: iterator.next() ?? "")
|
||||
case "--ai-tech-tsv":
|
||||
aiTech = URL(fileURLWithPath: iterator.next() ?? "")
|
||||
case "--output":
|
||||
output = URL(fileURLWithPath: iterator.next() ?? "")
|
||||
case "--locale":
|
||||
localeID = iterator.next() ?? localeID
|
||||
case "--identifier":
|
||||
modelID = iterator.next() ?? modelID
|
||||
case "--version":
|
||||
modelVersion = iterator.next() ?? modelVersion
|
||||
case "--max-entries":
|
||||
maxEntries = Int(iterator.next() ?? "")
|
||||
case "-h", "--help":
|
||||
printUsage()
|
||||
exit(0)
|
||||
default:
|
||||
fputs("Unknown flag: \(flag)\n", stderr)
|
||||
printUsage()
|
||||
exit(2)
|
||||
}
|
||||
}
|
||||
|
||||
return CLIOptions(
|
||||
sogouTSV: sogou,
|
||||
aiTechTSV: aiTech,
|
||||
outputBin: output,
|
||||
localeID: localeID,
|
||||
modelID: modelID,
|
||||
modelVersion: modelVersion,
|
||||
maxEntries: maxEntries
|
||||
)
|
||||
}
|
||||
|
||||
static func printUsage() {
|
||||
print("""
|
||||
export_clm.swift — build SFCustomLanguageModelData .bin on macOS
|
||||
|
||||
Options:
|
||||
--sogou-tsv <path> Sogou merged phrases TSV
|
||||
--ai-tech-tsv <path> AI/tech seed phrases TSV
|
||||
--output <path> Output .bin path
|
||||
--locale <id> Locale identifier (default: zh_CN)
|
||||
--identifier <id> Custom LM identifier
|
||||
--version <ver> Custom LM version string
|
||||
--max-entries <n> Optional cap for smoke tests
|
||||
-h, --help Show help
|
||||
""")
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - TSV parsing
|
||||
|
||||
struct PhraseEntry: Hashable {
|
||||
let phrase: String
|
||||
let weight: Int
|
||||
let source: String
|
||||
}
|
||||
|
||||
enum TSVLoader {
|
||||
static func load(from url: URL, sourceLabel: String) throws -> [PhraseEntry] {
|
||||
let text = try String(contentsOf: url, encoding: .utf8)
|
||||
var entries: [PhraseEntry] = []
|
||||
|
||||
for (index, rawLine) in text.split(whereSeparator: \.isNewline).enumerated() {
|
||||
let line = String(rawLine)
|
||||
if index == 0, line.lowercased().hasPrefix("word\t") {
|
||||
continue
|
||||
}
|
||||
if line.isEmpty || line.hasPrefix("#") {
|
||||
continue
|
||||
}
|
||||
|
||||
let parts = line.split(separator: "\t", omittingEmptySubsequences: false).map(String.init)
|
||||
guard let word = parts.first?.trimmingCharacters(in: .whitespacesAndNewlines), !word.isEmpty else {
|
||||
continue
|
||||
}
|
||||
|
||||
// Formats:
|
||||
// sogou: word, pinyin, source, weight
|
||||
// ai-tech: word, pinyin, source, category, weight, canonical
|
||||
let weight: Int
|
||||
if parts.count >= 6, let parsed = Int(parts[4]) {
|
||||
weight = parsed
|
||||
} else if parts.count >= 4, let parsed = Int(parts[3]) {
|
||||
weight = parsed
|
||||
} else {
|
||||
weight = 1
|
||||
}
|
||||
|
||||
let source = parts.count >= 3 ? parts[2] : sourceLabel
|
||||
entries.append(PhraseEntry(phrase: word, weight: max(1, weight), source: source))
|
||||
}
|
||||
|
||||
return entries
|
||||
}
|
||||
|
||||
static func merge(_ batches: [[PhraseEntry]]) -> [PhraseEntry] {
|
||||
var merged: [String: PhraseEntry] = [:]
|
||||
for batch in batches {
|
||||
for entry in batch {
|
||||
if let current = merged[entry.phrase] {
|
||||
if entry.weight >= current.weight {
|
||||
merged[entry.phrase] = entry
|
||||
}
|
||||
} else {
|
||||
merged[entry.phrase] = entry
|
||||
}
|
||||
}
|
||||
}
|
||||
return merged.values.sorted {
|
||||
if $0.weight != $1.weight { return $0.weight > $1.weight }
|
||||
return $0.phrase < $1.phrase
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Export
|
||||
|
||||
enum ExportCLM {
|
||||
static func run() async throws {
|
||||
let options = CLIOptions.parse()
|
||||
let fm = FileManager.default
|
||||
|
||||
guard fm.fileExists(atPath: options.sogouTSV.path) else {
|
||||
throw ExportError.missingInput(options.sogouTSV.path)
|
||||
}
|
||||
guard fm.fileExists(atPath: options.aiTechTSV.path) else {
|
||||
throw ExportError.missingInput(options.aiTechTSV.path)
|
||||
}
|
||||
|
||||
fputs("Loading phrases…\n", stderr)
|
||||
let sogou = try TSVLoader.load(from: options.sogouTSV, sourceLabel: "sogou_v1")
|
||||
let aiTech = try TSVLoader.load(from: options.aiTechTSV, sourceLabel: "ai_tech_seed")
|
||||
var merged = TSVLoader.merge([sogou, aiTech])
|
||||
|
||||
if let cap = options.maxEntries, merged.count > cap {
|
||||
merged = Array(merged.prefix(cap))
|
||||
fputs("Capped to \(cap) entries (--max-entries)\n", stderr)
|
||||
}
|
||||
|
||||
fputs(
|
||||
"Merged \(merged.count) unique phrases (sogou=\(sogou.count), ai-tech=\(aiTech.count))\n",
|
||||
stderr
|
||||
)
|
||||
fputs("Locale=\(options.localeID) identifier=\(options.modelID) version=\(options.modelVersion)\n", stderr)
|
||||
|
||||
let locale = Locale(identifier: options.localeID)
|
||||
let started = Date()
|
||||
|
||||
fputs("Building SFCustomLanguageModelData…\n", stderr)
|
||||
let data = SFCustomLanguageModelData(
|
||||
locale: locale,
|
||||
identifier: options.modelID,
|
||||
version: options.modelVersion
|
||||
) {
|
||||
for entry in merged {
|
||||
SFCustomLanguageModelData.PhraseCount(
|
||||
phrase: entry.phrase,
|
||||
count: entry.weight
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
let outputURL = options.outputBin
|
||||
let parent = outputURL.deletingLastPathComponent()
|
||||
try fm.createDirectory(at: parent, withIntermediateDirectories: true)
|
||||
if fm.fileExists(atPath: outputURL.path) {
|
||||
try fm.removeItem(at: outputURL)
|
||||
}
|
||||
|
||||
fputs("Exporting to \(outputURL.path)…\n", stderr)
|
||||
try await data.export(to: outputURL)
|
||||
|
||||
let elapsed = Date().timeIntervalSince(started)
|
||||
let bytes = (try? fm.attributesOfItem(atPath: outputURL.path)[.size] as? NSNumber)?.intValue ?? 0
|
||||
fputs(
|
||||
"Done in \(String(format: "%.1f", elapsed))s — \(outputURL.lastPathComponent) (\(bytes) bytes)\n",
|
||||
stderr
|
||||
)
|
||||
|
||||
let manifestURL = parent.appendingPathComponent("compiled-manifest.json")
|
||||
let manifest: [String: Any] = [
|
||||
"generated_at": ISO8601DateFormatter().string(from: Date()),
|
||||
"locale": options.localeID,
|
||||
"identifier": options.modelID,
|
||||
"version": options.modelVersion,
|
||||
"phrase_count": merged.count,
|
||||
"sources": [
|
||||
"sogou_v1": sogou.count,
|
||||
"ai_tech_seed": aiTech.count,
|
||||
],
|
||||
"bin_file": outputURL.lastPathComponent,
|
||||
"bin_bytes": bytes,
|
||||
"export_seconds": elapsed,
|
||||
]
|
||||
let manifestData = try JSONSerialization.data(withJSONObject: manifest, options: [.prettyPrinted, .sortedKeys])
|
||||
try manifestData.write(to: manifestURL)
|
||||
fputs("Wrote \(manifestURL.path)\n", stderr)
|
||||
}
|
||||
}
|
||||
|
||||
enum ExportError: LocalizedError {
|
||||
case missingInput(String)
|
||||
|
||||
var errorDescription: String? {
|
||||
switch self {
|
||||
case .missingInput(let path):
|
||||
return "Missing input file: \(path)"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Task {
|
||||
do {
|
||||
try await ExportCLM.run()
|
||||
exit(0)
|
||||
} catch {
|
||||
fputs("export_clm failed: \(error)\n", stderr)
|
||||
exit(1)
|
||||
}
|
||||
}
|
||||
dispatchMain()
|
||||
Executable
+6
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
# Compile SFCustomLanguageModelData .bin into LM + Vocab on macOS.
|
||||
set -euo pipefail
|
||||
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
||||
cd "$ROOT"
|
||||
exec swift "$ROOT/Scripts/lexicon/prepare_clm.swift" "$@"
|
||||
@@ -0,0 +1,196 @@
|
||||
#!/usr/bin/env swift
|
||||
//
|
||||
// prepare_clm.swift
|
||||
// OSGKeyboard · offline custom language model compiler (macOS 14+)
|
||||
//
|
||||
// Takes a SFCustomLanguageModelData .bin and runs:
|
||||
// SFSpeechLanguageModel.prepareCustomLanguageModel(...)
|
||||
//
|
||||
// Usage:
|
||||
// swift Scripts/lexicon/prepare_clm.swift
|
||||
// swift Scripts/lexicon/prepare_clm.swift --input path/to/OSGKeyboardCLM.bin
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import Speech
|
||||
|
||||
// MARK: - CLI
|
||||
|
||||
struct PrepareOptions {
|
||||
var inputBin: URL
|
||||
var outputDir: URL
|
||||
var clientIdentifier: String
|
||||
var weight: Double?
|
||||
|
||||
static func parse() -> PrepareOptions {
|
||||
let repoRoot = URL(fileURLWithPath: #filePath)
|
||||
.deletingLastPathComponent()
|
||||
.deletingLastPathComponent()
|
||||
.deletingLastPathComponent()
|
||||
|
||||
var input = repoRoot.appendingPathComponent(
|
||||
"OSGKeyboard/Resources/CustomLanguageModel/v1/OSGKeyboardCLM.bin"
|
||||
)
|
||||
var output = repoRoot.appendingPathComponent(
|
||||
"OSGKeyboard/Resources/CustomLanguageModel/v1/compiled"
|
||||
)
|
||||
var clientID = "com.osgkeyboard.custom-lm.v1"
|
||||
var weight: Double?
|
||||
|
||||
var iterator = CommandLine.arguments.dropFirst().makeIterator()
|
||||
while let flag = iterator.next() {
|
||||
switch flag {
|
||||
case "--input":
|
||||
input = URL(fileURLWithPath: iterator.next() ?? "")
|
||||
case "--output-dir":
|
||||
output = URL(fileURLWithPath: iterator.next() ?? "")
|
||||
case "--client-identifier":
|
||||
clientID = iterator.next() ?? clientID
|
||||
case "--weight":
|
||||
weight = Double(iterator.next() ?? "")
|
||||
case "-h", "--help":
|
||||
printUsage()
|
||||
exit(0)
|
||||
default:
|
||||
fputs("Unknown flag: \(flag)\n", stderr)
|
||||
printUsage()
|
||||
exit(2)
|
||||
}
|
||||
}
|
||||
|
||||
return PrepareOptions(
|
||||
inputBin: input,
|
||||
outputDir: output,
|
||||
clientIdentifier: clientID,
|
||||
weight: weight
|
||||
)
|
||||
}
|
||||
|
||||
static func printUsage() {
|
||||
print("""
|
||||
prepare_clm.swift — compile SFCustomLanguageModelData .bin on macOS
|
||||
|
||||
Options:
|
||||
--input <path> Training .bin (default: OSGKeyboardCLM.bin)
|
||||
--output-dir <path> Directory for compiled LM + Vocab
|
||||
--client-identifier <id> Client identifier (default: com.osgkeyboard.custom-lm.v1)
|
||||
--weight <0.0-1.0> Optional customization weight
|
||||
-h, --help Show help
|
||||
""")
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Runner
|
||||
|
||||
enum PrepareCLM {
|
||||
static func run() async throws {
|
||||
let options = PrepareOptions.parse()
|
||||
let fm = FileManager.default
|
||||
|
||||
guard fm.fileExists(atPath: options.inputBin.path) else {
|
||||
throw PrepareError.missingInput(options.inputBin.path)
|
||||
}
|
||||
|
||||
try fm.createDirectory(at: options.outputDir, withIntermediateDirectories: true)
|
||||
|
||||
let languageModelURL = options.outputDir.appendingPathComponent("LM")
|
||||
let vocabularyURL = options.outputDir.appendingPathComponent("Vocab")
|
||||
|
||||
// Remove stale outputs so prepare always starts clean.
|
||||
for url in [languageModelURL, vocabularyURL] {
|
||||
if fm.fileExists(atPath: url.path) {
|
||||
try fm.removeItem(at: url)
|
||||
}
|
||||
}
|
||||
|
||||
let configuration: SFSpeechLanguageModel.Configuration
|
||||
if let weight = options.weight {
|
||||
configuration = SFSpeechLanguageModel.Configuration(
|
||||
languageModel: languageModelURL,
|
||||
vocabulary: vocabularyURL,
|
||||
weight: NSNumber(value: weight)
|
||||
)
|
||||
} else {
|
||||
configuration = SFSpeechLanguageModel.Configuration(
|
||||
languageModel: languageModelURL,
|
||||
vocabulary: vocabularyURL
|
||||
)
|
||||
}
|
||||
|
||||
fputs("Input asset: \(options.inputBin.path)\n", stderr)
|
||||
fputs("Output dir: \(options.outputDir.path)\n", stderr)
|
||||
fputs("Client ID: \(options.clientIdentifier)\n", stderr)
|
||||
|
||||
let inputBytes = (try? fm.attributesOfItem(atPath: options.inputBin.path)[.size] as? NSNumber)?.intValue ?? 0
|
||||
fputs("Preparing custom language model (\(inputBytes) byte asset)…\n", stderr)
|
||||
fputs("This may take several minutes for large lexicons.\n", stderr)
|
||||
|
||||
let started = Date()
|
||||
try await SFSpeechLanguageModel.prepareCustomLanguageModel(
|
||||
for: options.inputBin,
|
||||
clientIdentifier: options.clientIdentifier,
|
||||
configuration: configuration
|
||||
)
|
||||
let elapsed = Date().timeIntervalSince(started)
|
||||
|
||||
let lmBytes = fileSize(at: languageModelURL)
|
||||
let vocabBytes = fileSize(at: vocabularyURL)
|
||||
|
||||
fputs(
|
||||
"Done in \(String(format: "%.1f", elapsed))s — LM=\(lmBytes) bytes, Vocab=\(vocabBytes) bytes\n",
|
||||
stderr
|
||||
)
|
||||
|
||||
let manifestURL = options.outputDir.appendingPathComponent("prepared-manifest.json")
|
||||
let manifest: [String: Any] = [
|
||||
"generated_at": ISO8601DateFormatter().string(from: Date()),
|
||||
"client_identifier": options.clientIdentifier,
|
||||
"input_bin": options.inputBin.lastPathComponent,
|
||||
"input_bin_bytes": inputBytes,
|
||||
"language_model": languageModelURL.lastPathComponent,
|
||||
"language_model_bytes": lmBytes,
|
||||
"vocabulary": vocabularyURL.lastPathComponent,
|
||||
"vocabulary_bytes": vocabBytes,
|
||||
"prepare_seconds": elapsed,
|
||||
"configuration": [
|
||||
"language_model": languageModelURL.path,
|
||||
"vocabulary": vocabularyURL.path,
|
||||
"weight": options.weight as Any,
|
||||
],
|
||||
]
|
||||
let manifestData = try JSONSerialization.data(
|
||||
withJSONObject: manifest,
|
||||
options: [.prettyPrinted, .sortedKeys]
|
||||
)
|
||||
try manifestData.write(to: manifestURL)
|
||||
fputs("Wrote \(manifestURL.path)\n", stderr)
|
||||
}
|
||||
|
||||
private static func fileSize(at url: URL) -> Int {
|
||||
let fm = FileManager.default
|
||||
guard fm.fileExists(atPath: url.path) else { return 0 }
|
||||
return (try? fm.attributesOfItem(atPath: url.path)[.size] as? NSNumber)?.intValue ?? 0
|
||||
}
|
||||
}
|
||||
|
||||
enum PrepareError: LocalizedError {
|
||||
case missingInput(String)
|
||||
|
||||
var errorDescription: String? {
|
||||
switch self {
|
||||
case .missingInput(let path):
|
||||
return "Missing input .bin: \(path)"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Task {
|
||||
do {
|
||||
try await PrepareCLM.run()
|
||||
exit(0)
|
||||
} catch {
|
||||
fputs("prepare_clm failed: \(error)\n", stderr)
|
||||
exit(1)
|
||||
}
|
||||
}
|
||||
dispatchMain()
|
||||
@@ -0,0 +1,133 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Parse Sogou .scel cell dictionaries into (word, pinyin) entries.
|
||||
|
||||
Layout follows the classic SCEL format used by imewlconverter / SogouPopularDict.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import struct
|
||||
from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class ScelInfo:
|
||||
word_count: int
|
||||
name: str
|
||||
type_name: str
|
||||
description: str
|
||||
|
||||
|
||||
def _read_uint16(handle) -> int:
|
||||
data = handle.read(2)
|
||||
if not data or len(data) < 2:
|
||||
return 0
|
||||
return struct.unpack("<H", data)[0]
|
||||
|
||||
|
||||
def _read_uint32(handle) -> int:
|
||||
data = handle.read(4)
|
||||
if not data or len(data) < 4:
|
||||
return 0
|
||||
return struct.unpack("<I", data)[0]
|
||||
|
||||
|
||||
def _read_utf16_str(handle, *, offset: int = -1, length: int = 0) -> str:
|
||||
if offset >= 0:
|
||||
handle.seek(offset)
|
||||
if length > 0:
|
||||
data = handle.read(length)
|
||||
end = 0
|
||||
for index in range(0, len(data), 2):
|
||||
if index + 1 < len(data) and data[index] == 0 and data[index + 1] == 0:
|
||||
end = index
|
||||
break
|
||||
if end > 0:
|
||||
data = data[:end]
|
||||
return data.decode("utf-16le", errors="ignore")
|
||||
|
||||
result = bytearray()
|
||||
while True:
|
||||
char = handle.read(2)
|
||||
if not char or len(char) < 2 or (char[0] == 0 and char[1] == 0):
|
||||
break
|
||||
result.extend(char)
|
||||
return result.decode("utf-16le", errors="ignore")
|
||||
|
||||
|
||||
def is_valid_word(word: str) -> bool:
|
||||
if not word or not (1 <= len(word) <= 10):
|
||||
return False
|
||||
allowed_punct = ",。:;?!()【】《》""''、"
|
||||
return all("\u4e00" <= char <= "\u9fff" or char.isdigit() or char in allowed_punct for char in word)
|
||||
|
||||
|
||||
def get_scel_info(scel_path: Path) -> ScelInfo:
|
||||
with scel_path.open("rb") as handle:
|
||||
handle.seek(0x124)
|
||||
word_count = _read_uint32(handle)
|
||||
handle.seek(0x130)
|
||||
name = _read_utf16_str(handle, length=64)
|
||||
handle.seek(0x338)
|
||||
type_name = _read_utf16_str(handle, length=64)
|
||||
handle.seek(0x540)
|
||||
description = _read_utf16_str(handle, length=1024)
|
||||
return ScelInfo(word_count=word_count, name=name, type_name=type_name, description=description)
|
||||
|
||||
|
||||
def parse_scel_file(scel_path: Path) -> list[tuple[str, str]]:
|
||||
"""Return ordered (word, pinyin) pairs from a .scel file."""
|
||||
entries: list[tuple[str, str]] = []
|
||||
|
||||
with scel_path.open("rb") as handle:
|
||||
handle.seek(0x1540)
|
||||
pinyin_count = _read_uint32(handle)
|
||||
pinyin_dict: dict[int, str] = {}
|
||||
for _ in range(pinyin_count):
|
||||
pinyin_idx = _read_uint16(handle)
|
||||
pinyin_len = _read_uint16(handle)
|
||||
pinyin = handle.read(pinyin_len).decode("utf-16le", errors="ignore").strip().lower()
|
||||
pinyin_dict[pinyin_idx] = pinyin
|
||||
|
||||
try:
|
||||
while True:
|
||||
same_pinyin_count = _read_uint16(handle)
|
||||
pinyin_index_len = _read_uint16(handle)
|
||||
if pinyin_index_len <= 0 or same_pinyin_count <= 0:
|
||||
break
|
||||
|
||||
pinyin_parts: list[str] = []
|
||||
for _ in range(pinyin_index_len // 2):
|
||||
idx = _read_uint16(handle)
|
||||
part = pinyin_dict.get(idx, "")
|
||||
if part:
|
||||
pinyin_parts.append(part)
|
||||
joined_pinyin = " ".join(pinyin_parts).strip()
|
||||
|
||||
for _ in range(same_pinyin_count):
|
||||
word_len = _read_uint16(handle)
|
||||
word = handle.read(word_len).decode("utf-16le", errors="ignore")
|
||||
_ = _read_uint16(handle)
|
||||
_ = _read_uint32(handle)
|
||||
_ = handle.read(6)
|
||||
if is_valid_word(word):
|
||||
entries.append((word, joined_pinyin))
|
||||
except (struct.error, OSError):
|
||||
pass
|
||||
|
||||
return entries
|
||||
|
||||
|
||||
def load_pinyin_tsv(tsv_path: Path) -> list[tuple[str, str]]:
|
||||
entries: list[tuple[str, str]] = []
|
||||
with tsv_path.open(encoding="utf-8") as handle:
|
||||
for raw_line in handle:
|
||||
line = raw_line.strip()
|
||||
if not line:
|
||||
continue
|
||||
word, _, pinyin = line.partition("\t")
|
||||
if word and pinyin:
|
||||
entries.append((word, pinyin.strip()))
|
||||
return entries
|
||||
@@ -0,0 +1,381 @@
|
||||
# OSGKeyboard · AI / Tech / Brand seed lexicon (curated, permissive sources only)
|
||||
# Columns: word pinyin aliases category weight
|
||||
# aliases: pipe-separated alternate spellings / ASR confusions
|
||||
# License: curated by OSGKeyboard contributors (MIT). No third-party data bundled.
|
||||
#
|
||||
# --- AI brands & products ---
|
||||
DeepSeek deepseek|Deepseek|deep seek ai_brand 100
|
||||
深度求索 shen du qiu suo ai_brand 100
|
||||
OpenAI open ai|Open AI ai_brand 100
|
||||
ChatGPT chat gpt|Chat GPT|chatgpt ai_brand 100
|
||||
GPT gpt-4|GPT-4|GPT-4o|gpt4o ai_model 95
|
||||
Anthropic anthropic|Athropic|Anthropic ai_brand 100
|
||||
Claude claude|Claude Sonnet|Claude Opus ai_brand 100
|
||||
Google google|Alphabet tech_company 95
|
||||
Gemini gemini|Bard|Google Gemini ai_brand 95
|
||||
Meta meta|Facebook tech_company 95
|
||||
Llama llama|LLaMA|Llama 3|Llama 4 ai_model 90
|
||||
Microsoft microsoft|MSFT tech_company 95
|
||||
Copilot copilot|GitHub Copilot|Microsoft Copilot ai_brand 90
|
||||
GitHub Copilot github copilot ai_brand 88
|
||||
DeepMind deep mind|Google DeepMind ai_brand 88
|
||||
Mistral mistral ai|Mistral AI ai_brand 85
|
||||
Cohere cohere ai_brand 80
|
||||
Perplexity perplexity ai|Perplexity AI ai_brand 88
|
||||
Cursor cursor ai|Cursor AI dev_tool 90
|
||||
Kimi kimi|Kimi AI|Moonshot|Moonshot AI ai_brand 95
|
||||
月之暗面 yue zhi an mian ai_brand 90
|
||||
Qwen qwen|Qwen2|Qwen3|通义千问|千问 ai_brand 95
|
||||
通义千问 tong yi qian wen Qwen|qwen ai_brand 95
|
||||
GLM glm|GLM-4|GLM-5|智谱|Zhipu ai_brand 90
|
||||
智谱 zhi pu GLM|Zhipu AI ai_brand 88
|
||||
Zhipu AI zhipu|智谱 ai_brand 88
|
||||
文心一言 wen xin yi yan ERNIE|Ernie ai_brand 90
|
||||
ERNIE ernie|文心一言 ai_brand 88
|
||||
豆包 dou bao Doubao|doubao ai_brand 90
|
||||
Doubao dou bao|豆包 ai_brand 88
|
||||
混元 hun yuan Hunyuan|腾讯混元 ai_brand 85
|
||||
Hunyuan hun yuan|混元 ai_brand 85
|
||||
星火 xing huo Spark|讯飞星火 ai_brand 85
|
||||
讯飞 iFlytek|iflytek|科大讯飞 ai_brand 85
|
||||
iFlytek iflytek|讯飞 ai_brand 85
|
||||
Midjourney mid journey|Mid Journey ai_brand 88
|
||||
Stable Diffusion stable diffusion|SD ai_brand 85
|
||||
DALL-E dalle|DALL E|Dall-E ai_brand 85
|
||||
Sora sora ai|Sora AI ai_brand 88
|
||||
Hugging Face huggingface|HuggingFace|HF ai_platform 85
|
||||
Ollama ollama ai_platform 82
|
||||
LangChain lang chain|Langchain ai_platform 80
|
||||
vLLM vllm|VLLM ai_platform 80
|
||||
xAI x ai|Grok ai_brand 88
|
||||
Grok grok|xAI ai_brand 85
|
||||
Groq groq|GROQ ai_brand 82
|
||||
Replicate replicate ai_platform 78
|
||||
Runway runway ai|Runway ML ai_brand 80
|
||||
Pika pika ai|Pika Labs ai_brand 75
|
||||
ElevenLabs eleven labs|Eleven Labs ai_brand 80
|
||||
Character AI character.ai|Character.AI ai_brand 78
|
||||
Notion AI notion ai ai_brand 75
|
||||
Windsurf windsurf|Codeium Windsurf dev_tool 82
|
||||
Codeium codeium ai_brand 80
|
||||
Cline cline|Cline AI dev_tool 78
|
||||
Aider aider ai_brand 75
|
||||
Replit replit|Replit Agent dev_tool 78
|
||||
SiliconFlow silicon flow|Silicon Flow ai_platform 80
|
||||
OpenRouter open router|Open Router ai_platform 82
|
||||
DeepSeek-R1 deepseek r1|DeepSeek R1|R1 ai_model 92
|
||||
DeepSeek-V3 deepseek v3|DeepSeek V3 ai_model 90
|
||||
o1 openai o1|O1 ai_model 88
|
||||
o3 openai o3|O3 ai_model 88
|
||||
Sonnet claude sonnet|Sonnet 4 ai_model 85
|
||||
Opus claude opus|Opus 4 ai_model 85
|
||||
MiniMax minimax|MiniMax AI ai_brand 85
|
||||
StepFun step fun|阶跃星辰 ai_brand 82
|
||||
阶跃星辰 jie yue xing chen StepFun ai_brand 80
|
||||
百川 bai chuan|Baichuan ai_brand 82
|
||||
Baichuan baichuan|百川 ai_brand 82
|
||||
零一万物 ling yi wan wu|01.AI|Yi ai_brand 82
|
||||
01.AI 01 ai|零一万物 ai_brand 80
|
||||
面壁智能 mian bi zhi neng MiniCPM ai_brand 78
|
||||
MiniCPM minicpm|面壁 ai_model 75
|
||||
#
|
||||
# --- AI / dev terminology ---
|
||||
Transformer transformer|变换器 ai_term 95
|
||||
RAG rag|检索增强生成|retrieval augmented generation ai_term 95
|
||||
检索增强生成 jian suo zeng qiang sheng cheng RAG ai_term 92
|
||||
LoRA lora|低秩适配 ai_term 90
|
||||
微调 wei tiao fine-tuning|fine tuning ai_term 90
|
||||
fine-tuning fine tuning|微调 ai_term 88
|
||||
MoE moe|mixture of experts|混合专家 ai_term 88
|
||||
混合专家 hun he zhuan jia MoE ai_term 85
|
||||
embedding 嵌入|embeddings ai_term 90
|
||||
嵌入 qian ru embedding ai_term 88
|
||||
tokenizer tokenizer|分词器 ai_term 85
|
||||
幻觉 huan jue hallucination ai_term 88
|
||||
hallucination 幻觉 ai_term 85
|
||||
提示词 ti shi ci prompt|Prompt ai_term 92
|
||||
prompt prompt engineering|提示词 ai_term 90
|
||||
智能体 zhi neng ti agent|Agent|AI agent ai_term 92
|
||||
agent agentic|智能体|AI agent ai_term 90
|
||||
agentic agentic AI|智能体 ai_term 88
|
||||
vibe coding vibe code|Vibe Coding|氛围编程 ai_term 95
|
||||
氛围编程 fen wei bian cheng vibe coding ai_term 90
|
||||
MCP model context protocol|MCP server ai_term 92
|
||||
上下文窗口 shang xia wen chuang kou context window ai_term 88
|
||||
context window 上下文窗口 ai_term 85
|
||||
diffusion 扩散模型 ai_term 85
|
||||
扩散模型 kuo san mo xing diffusion ai_term 82
|
||||
推理 tui li inference|reasoning ai_term 88
|
||||
inference 推理 ai_term 85
|
||||
RLHF rlhf|人类反馈强化学习 ai_term 85
|
||||
chain of thought chain-of-thought|思维链 ai_term 88
|
||||
思维链 si wei lian chain of thought ai_term 85
|
||||
多模态 duo mo tai multimodal ai_term 88
|
||||
multimodal 多模态 ai_term 85
|
||||
AGI agi|通用人工智能 ai_term 90
|
||||
通用人工智能 tong yong ren gong zhi neng AGI ai_term 88
|
||||
LLM llm|大语言模型|large language model ai_term 92
|
||||
大语言模型 da yu yan mo xing LLM ai_term 90
|
||||
大模型 da mo xing LLM|large model ai_term 92
|
||||
SLM slm|小语言模型 ai_term 80
|
||||
量化 liang hua quantization ai_term 85
|
||||
quantization 量化 ai_term 82
|
||||
function calling tool calling|工具调用 ai_term 88
|
||||
工具调用 gong ju diao yong function calling ai_term 85
|
||||
流式 liu shi streaming ai_term 82
|
||||
streaming 流式 ai_term 80
|
||||
AIGC aigc|生成式人工智能 ai_term 88
|
||||
生成式人工智能 sheng cheng shi ren gong zhi neng GenAI|AIGC ai_term 85
|
||||
GenAI gen ai|生成式AI ai_term 88
|
||||
prompt engineering 提示工程 ai_term 85
|
||||
提示工程 ti shi gong cheng prompt engineering ai_term 82
|
||||
reasoning model 推理模型|thinking model ai_term 88
|
||||
推理模型 tui li mo xing reasoning model ai_term 85
|
||||
jailbreak 越狱 ai_term 75
|
||||
越狱 yue yu jailbreak ai_term 72
|
||||
SWE-bench swe bench|SWE bench ai_term 80
|
||||
benchmark 基准测试 ai_term 78
|
||||
open weight open weights|开放权重 ai_term 82
|
||||
开放权重 kai fang quan zhong open weight ai_term 80
|
||||
distillation 蒸馏|知识蒸馏 ai_term 82
|
||||
知识蒸馏 zhi shi zheng liu distillation ai_term 80
|
||||
pretraining pre-training|预训练 ai_term 82
|
||||
预训练 yu xun lian pretraining ai_term 80
|
||||
vector database 向量数据库 ai_term 82
|
||||
向量数据库 xiang liang shu ju ku vector database ai_term 80
|
||||
RAG pipeline rag pipeline ai_term 78
|
||||
AI native AI-native|AI原生 ai_term 82
|
||||
AI原生 AI yuan sheng AI native ai_term 80
|
||||
computer use computer-use|电脑使用 ai_term 80
|
||||
deep research deep research|深度研究 ai_term 82
|
||||
on-device AI on device ai|端侧AI ai_term 80
|
||||
端侧AI duan ce AI on-device AI ai_term 78
|
||||
#
|
||||
# --- US / global tech companies ---
|
||||
SpaceX space x|Space X tech_company 95
|
||||
Tesla tesla|Tesla Motors tech_company 95
|
||||
Apple apple|苹果公司 tech_company 95
|
||||
Microsoft microsoft|微软 tech_company 95
|
||||
Google google|谷歌 tech_company 95
|
||||
Alphabet alphabet|Google tech_company 90
|
||||
Meta meta|Facebook|脸书 tech_company 95
|
||||
Amazon amazon|AWS|亚马逊 tech_company 95
|
||||
AWS aws|Amazon Web Services tech_company 92
|
||||
Nvidia nvidia|NVDA|英伟达 tech_company 98
|
||||
英伟达 ying wei da Nvidia|NVDA tech_company 95
|
||||
AMD amd tech_company 88
|
||||
Intel intel|英特尔 tech_company 88
|
||||
Netflix netflix tech_company 85
|
||||
Uber uber tech_company 85
|
||||
Airbnb airbnb tech_company 82
|
||||
Stripe stripe tech_company 88
|
||||
Shopify shopify tech_company 82
|
||||
Salesforce salesforce tech_company 85
|
||||
Oracle oracle tech_company 82
|
||||
IBM ibm tech_company 82
|
||||
Adobe adobe tech_company 85
|
||||
Spotify spotify tech_company 82
|
||||
Reddit reddit tech_company 80
|
||||
Discord discord tech_company 80
|
||||
Slack slack tech_company 80
|
||||
Zoom zoom tech_company 80
|
||||
Palantir palantir tech_company 82
|
||||
Neuralink neural link|Neural Link tech_company 85
|
||||
Waymo waymo tech_company 85
|
||||
Rivian rivian tech_company 80
|
||||
Lucid lucid motors|Lucid Motors tech_company 78
|
||||
Coinbase coinbase tech_company 82
|
||||
Robinhood robin hood|Robin Hood fintech 78
|
||||
PayPal paypal tech_company 82
|
||||
Block block|Square|square fintech 78
|
||||
Visa visa tech_company 78
|
||||
Samsung samsung|三星 tech_company 88
|
||||
Sony sony|索尼 tech_company 85
|
||||
Nintendo nintendo|任天堂 tech_company 82
|
||||
TSMC tsmc|台积电 tech_company 90
|
||||
台积电 tai ji dian TSMC tech_company 88
|
||||
ASML asml tech_company 85
|
||||
Broadcom broadcom tech_company 80
|
||||
Qualcomm qualcomm|高通 tech_company 85
|
||||
高通 gao tong Qualcomm tech_company 82
|
||||
Arm arm|ARM Holdings tech_company 85
|
||||
Snowflake snowflake tech_company 80
|
||||
Databricks databricks tech_company 85
|
||||
Cloudflare cloudflare tech_company 82
|
||||
Twilio twilio tech_company 78
|
||||
Datadog datadog tech_company 78
|
||||
ServiceNow service now|ServiceNow tech_company 78
|
||||
Atlassian atlassian|Jira|Confluence tech_company 80
|
||||
Canva canva tech_company 80
|
||||
Figma figma tech_company 85
|
||||
Notion notion tech_company 82
|
||||
Linear linear app|Linear tech_company 78
|
||||
Vercel vercel|Next.js tech_company 82
|
||||
Next.js nextjs|NextJS|next js dev_tool 85
|
||||
Vercel vercel tech_company 80
|
||||
Supabase supabase tech_company 80
|
||||
Firebase firebase tech_company 80
|
||||
MongoDB mongodb|Mongo DB tech_company 82
|
||||
Redis redis tech_company 82
|
||||
Elastic elastic|Elasticsearch tech_company 78
|
||||
Docker docker tech_company 88
|
||||
Kubernetes kubernetes|k8s|K8s dev_tool 90
|
||||
k8s kubernetes|Kubernetes dev_tool 88
|
||||
Terraform terraform tech_company 80
|
||||
GitLab gitlab tech_company 80
|
||||
Bitbucket bitbucket tech_company 75
|
||||
Jenkins jenkins dev_tool 75
|
||||
CircleCI circle ci|Circle CI dev_tool 75
|
||||
#
|
||||
# --- Chinese tech companies (English names) ---
|
||||
Huawei huawei|华为|HW tech_company 95
|
||||
华为 hua wei Huawei tech_company 95
|
||||
Xiaomi xiaomi|小米|MI tech_company 95
|
||||
小米 xiao mi Xiaomi tech_company 95
|
||||
ByteDance byte dance|字节跳动|Bytedance tech_company 95
|
||||
字节跳动 zi jie tiao dong ByteDance tech_company 95
|
||||
TikTok tik tok|Tik Tok|抖音海外 tech_company 92
|
||||
Douyin dou yin|抖音 tech_company 90
|
||||
抖音 dou yin Douyin|TikTok tech_company 90
|
||||
Alibaba alibaba|阿里巴巴|阿里 tech_company 95
|
||||
阿里巴巴 a li ba ba Alibaba tech_company 95
|
||||
Taobao taobao|淘宝 tech_company 88
|
||||
淘宝 tao bao Taobao tech_company 88
|
||||
Tmall tmall|天猫 tech_company 85
|
||||
天猫 tian mao Tmall tech_company 85
|
||||
Tencent tencent|腾讯 tech_company 95
|
||||
腾讯 teng xun Tencent tech_company 95
|
||||
WeChat we chat|微信 tech_company 92
|
||||
微信 wei xin WeChat tech_company 92
|
||||
Baidu baidu|百度 tech_company 92
|
||||
百度 bai du Baidu tech_company 92
|
||||
JD.com jd.com|京东|JD tech_company 88
|
||||
京东 jing dong JD.com tech_company 88
|
||||
Meituan meituan|美团 tech_company 88
|
||||
美团 mei tuan Meituan tech_company 88
|
||||
Pinduoduo pinduoduo|拼多多|PDD tech_company 88
|
||||
拼多多 pin duo duo Pinduoduo tech_company 88
|
||||
BYD byd|比亚迪 tech_company 95
|
||||
比亚迪 bi ya di BYD tech_company 95
|
||||
NIO nio|蔚来 tech_company 90
|
||||
蔚来 wei lai NIO tech_company 90
|
||||
XPeng xpeng|小鹏汽车|X Peng tech_company 90
|
||||
小鹏汽车 xiao peng qi che XPeng tech_company 90
|
||||
Li Auto li auto|理想汽车|理想 tech_company 90
|
||||
理想汽车 li xiang qi che Li Auto tech_company 90
|
||||
Zeekr zeekr|极氪 tech_company 85
|
||||
极氪 ji ke Zeekr tech_company 85
|
||||
CATL catl|宁德时代 tech_company 92
|
||||
宁德时代 ning de shi dai CATL tech_company 92
|
||||
DJI dji|大疆 tech_company 90
|
||||
大疆 da jiang DJI tech_company 90
|
||||
SMIC smic|中芯国际 tech_company 88
|
||||
中芯国际 zhong xin guo ji SMIC tech_company 88
|
||||
Lenovo lenovo|联想 tech_company 88
|
||||
联想 lian xiang Lenovo tech_company 88
|
||||
Oppo oppo|OPPO tech_company 85
|
||||
Vivo vivo|VIVO tech_company 85
|
||||
Honor honor|荣耀 tech_company 85
|
||||
荣耀 rong yao Honor tech_company 85
|
||||
Shein shein|SHEIN tech_company 85
|
||||
Temu temu tech_company 85
|
||||
Ant Group ant group|蚂蚁集团|Alipay tech_company 88
|
||||
蚂蚁集团 ma yi ji tuan Ant Group tech_company 88
|
||||
Alipay alipay|支付宝 tech_company 88
|
||||
支付宝 zhi fu bao Alipay tech_company 88
|
||||
Weibo weibo|微博 tech_company 82
|
||||
微博 wei bo Weibo tech_company 82
|
||||
Bilibili bilibili|B站|哔哩哔哩 tech_company 88
|
||||
哔哩哔哩 bi li bi li Bilibili|B站 tech_company 88
|
||||
B站 B zhan Bilibili|哔哩哔哩 tech_company 85
|
||||
NetEase netease|网易 tech_company 85
|
||||
网易 wang yi NetEase tech_company 85
|
||||
Kuaishou kuaishou|快手 tech_company 85
|
||||
快手 kuai shou Kuaishou tech_company 85
|
||||
SenseTime sensetime|商汤 tech_company 82
|
||||
商汤 shang tang SenseTime tech_company 82
|
||||
Megvii megvii|旷视 tech_company 80
|
||||
旷视 kuang shi Megvii tech_company 80
|
||||
Horizon Robotics horizon|地平线 tech_company 82
|
||||
地平线 di ping xian Horizon tech_company 80
|
||||
Geely geely|吉利 tech_company 82
|
||||
吉利 ji li Geely tech_company 80
|
||||
Great Wall great wall|长城汽车 tech_company 78
|
||||
长城汽车 chang cheng qi che Great Wall tech_company 78
|
||||
#
|
||||
# --- Tech leaders (bilingual where useful) ---
|
||||
Elon Musk 马斯克|elon musk tech_leader 92
|
||||
马斯克 ma si ke Elon Musk tech_leader 92
|
||||
Sam Altman sam altman|山姆奥特曼 tech_leader 88
|
||||
Jensen Huang 黄仁勋|jensen huang tech_leader 90
|
||||
黄仁勋 huang ren xun Jensen Huang tech_leader 90
|
||||
Tim Cook 库克|tim cook tech_leader 85
|
||||
库克 ku ke Tim Cook tech_leader 85
|
||||
Satya Nadella satya nadella|纳德拉 tech_leader 82
|
||||
Sundar Pichai sundar pichai|皮查伊 tech_leader 82
|
||||
Mark Zuckerberg mark zuckerberg|扎克伯格 tech_leader 85
|
||||
扎克伯格 zhai ke bo ge Mark Zuckerberg tech_leader 85
|
||||
Jeff Bezos jeff bezos|贝索斯 tech_leader 82
|
||||
雷军 lei jun Lei Jun tech_leader 90
|
||||
Lei Jun lei jun|雷军 tech_leader 90
|
||||
何小鹏 he xiao peng He Xiaopeng|XPeng tech_leader 88
|
||||
He Xiaopeng he xiao peng|何小鹏 tech_leader 88
|
||||
李斌 li bin William Li|NIO tech_leader 85
|
||||
余承东 yu cheng dong tech_leader 82
|
||||
梁文锋 liang wen feng DeepSeek tech_leader 85
|
||||
乔布斯 qiao bu si Steve Jobs tech_leader 90
|
||||
Steve Jobs steve jobs|乔布斯 tech_leader 90
|
||||
#
|
||||
# --- Dev tools & platforms ---
|
||||
GitHub github|GitHub tech_company 92
|
||||
GitLab gitlab tech_company 80
|
||||
VS Code vs code|VSCode|Visual Studio Code dev_tool 88
|
||||
Visual Studio Code vscode|VS Code dev_tool 85
|
||||
Xcode xcode dev_tool 85
|
||||
SwiftUI swift ui|Swift UI dev_tool 82
|
||||
React react|ReactJS dev_tool 85
|
||||
Vue vue|Vue.js|Vue3 dev_tool 82
|
||||
TypeScript typescript|TS dev_tool 85
|
||||
Python python dev_tool 88
|
||||
Rust rust dev_tool 82
|
||||
Go golang|Golang dev_tool 82
|
||||
Node.js nodejs|NodeJS|node js dev_tool 82
|
||||
PyTorch pytorch|Py Torch dev_tool 88
|
||||
TensorFlow tensorflow|Tensor Flow dev_tool 85
|
||||
Jupyter jupyter|Jupyter Notebook dev_tool 78
|
||||
Postman postman dev_tool 78
|
||||
Figma figma dev_tool 85
|
||||
Notion notion dev_tool 82
|
||||
Linear linear dev_tool 78
|
||||
Obsidian obsidian dev_tool 75
|
||||
Raycast raycast dev_tool 75
|
||||
Warp warp terminal|Warp dev_tool 75
|
||||
#
|
||||
# --- Hot internet / product terms ---
|
||||
SaaS saas|SaaS tech_term 82
|
||||
API api|API tech_term 85
|
||||
SDK sdk|SDK tech_term 82
|
||||
GPU gpu|GPU tech_term 88
|
||||
CUDA cuda|CUDA tech_term 85
|
||||
NPU npu|NPU tech_term 82
|
||||
TPU tpu|TPU tech_term 80
|
||||
Web3 web3|Web 3 tech_term 78
|
||||
区块链 qu kuai lian blockchain tech_term 82
|
||||
blockchain 区块链 tech_term 80
|
||||
元宇宙 yuan yu zhou metaverse tech_term 78
|
||||
metaverse 元宇宙 tech_term 75
|
||||
自动驾驶 zi dong jia shi autonomous driving|FSD tech_term 85
|
||||
FSD full self driving|全自动驾驶 tech_term 82
|
||||
人形机器人 ren xing ji qi ren humanoid robot|Optimus tech_term 82
|
||||
Optimus optimus|擎天柱 tech_term 80
|
||||
星链 xing lian Starlink tech_term 85
|
||||
Starlink star link|星链 tech_term 85
|
||||
低空经济 di kong jing ji low altitude economy tech_term 80
|
||||
具身智能 ju shen zhi neng embodied AI tech_term 82
|
||||
embodied AI 具身智能 tech_term 80
|
||||
出海 chu hai go global|全球化 tech_term 78
|
||||
内卷 nei juan involution tech_term 75
|
||||
躺平 tang ping lying flat tech_term 72
|
||||
数字游民 shu zi you min digital nomad tech_term 75
|
||||
远程办公 yuan cheng ban gong remote work tech_term 78
|
||||
副业 fu ye side hustle tech_term 72
|
||||
|
Reference in New Issue
Block a user