Rust str 转 String

在 Rust 中,str 是引用,String 是字符串对象,如下所示,点击执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 代码来自 https://github.com/rust-lang/rustlings
fn string_slice(arg: &str) {
println!("{}", arg);
}
fn string(arg: String) {
println!("{}", arg);
}

fn main() {
string("red".to_string());
string("rust is fun!".to_owned());
string("nice weather".into());
string(String::from("hi"));
string(format!("Interpolation {}", "Station"));
string("Happy Monday!".to_string().replace("Mon", "Tues"));
string("mY sHiFt KeY iS sTiCkY".to_lowercase());

string_slice("blue");
string_slice(&String::from("abc")[0..1]);
string_slice(&"abc".to_string()[0..1]);
string_slice(" hello there ".trim());
}

More

AI 工程师养成记(上)

一转眼转行已四年时间,这是转行以来第一次写关于个人对转行后感想心得的文章。一方面是因为所跨行业过大,行业内也有很多细分领域,要进一步明确方向需要不断试探。事实上,这几年基本能碰的都折腾过了,总算逐渐坚定;另一方面也是感觉一直没有从维度上得到提升,多个领域始终处于不得要领阶段,走了非常多的弯路。这次感受源于与一位资深算法工程师的沟通,又经几篇关于算法工程师工作日常和修养的好文,再加上这些年的积累,认真反思了几日,终于感觉到自己有了质的突破。虽然技能并没有多掌握,但确实比之前强大了不少(虽然依然很弱),有点像炼气期满筑基,奋斗之路刚刚开始,是有此文。

More

从 Sentence-BERT 谈句子表征

在之前那篇 NLP 表征的历史与未来 | Yam 里,我们几乎从头到尾都在提及句子表征,也提出过一个很重要的概念:“句子” 才是语义理解的最小单位。不过当时并没有太过深入细节,直到做到文本相似度任务时才发现早已经有人将其 BERT 化了。这就是本文要提到的一篇很重要但又很顺其自然的一篇论文——Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks。其实说到相似度,大家多少都会想到大名鼎鼎的 Siamese Recurrent Networks,他们当时(2016 年)用的是 LSTM 对句子表征,那是因为那时候 LSTM 效果是最好的。Sentence-BERT 其实就是将 LSTM 替换为 BERT。

More

NLP 表征的历史与未来

从 Ngram 这样最简单的 SLM(Statistical Language Model)和 OneHot、LSA 以及其他 Co-Occurrence 的 VSM 模型,到 Word2Vec Glove 等考虑简单上下文的词向量模型,再到 CNN RNN BI-LSTM 等更多上下文和更复杂结构的模型,再到基于 Self-Attention 的 Bert 等考虑注意力的模型。我们能够感觉到每一次的变革一定是某种 ”模式“ 层面发生了变化。

More