Skip to content

Commit 4892b13

Browse files
danieldkDaniël de Kok
authored andcommitted
Update to finalfusion 0.11
1 parent 8f34aa3 commit 4892b13

File tree

7 files changed

+64
-59
lines changed

7 files changed

+64
-59
lines changed

Cargo.lock

Lines changed: 42 additions & 39 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ features = ["extension-module"]
2020

2121
[dependencies]
2222
itertools = "0.8"
23-
finalfusion = { git = "https://github.com/finalfusion/finalfusion-rust", rev = "66388fe0e46c45d009ffdb8342c76fcb8c9c64d3"}
24-
ndarray = "0.12"
23+
finalfusion = "0.11"
24+
ndarray = "0.13"
2525
numpy = "0.7"
2626
toml = "0.5"

src/embeddings.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@ use std::fs::File;
44
use std::io::{BufReader, BufWriter};
55
use std::rc::Rc;
66

7-
use finalfusion::chunks::metadata::Metadata;
87
use finalfusion::compat::text::{ReadText, ReadTextDims};
98
use finalfusion::compat::word2vec::ReadWord2Vec;
10-
use finalfusion::io as ffio;
9+
use finalfusion::io::{self as ffio, WriteEmbeddings};
10+
use finalfusion::metadata::Metadata;
1111
use finalfusion::prelude::*;
1212
use finalfusion::similarity::*;
13+
use finalfusion::storage::{NdArray, Storage};
14+
use finalfusion::vocab::Vocab;
1315
use itertools::Itertools;
1416
use ndarray::Array1;
1517
use numpy::{IntoPyArray, NpyDataType, PyArray1};
@@ -252,7 +254,7 @@ impl PyEmbeddings {
252254
NonView(e) => e.metadata(),
253255
};
254256

255-
match metadata.map(|v| toml::ser::to_string_pretty(&v.0)) {
257+
match metadata.map(|v| toml::ser::to_string_pretty(&**v)) {
256258
Some(Ok(toml)) => Ok(Some(toml)),
257259
Some(Err(err)) => Err(exceptions::IOError::py_err(format!(
258260
"Metadata is invalid TOML: {}",
@@ -278,8 +280,8 @@ impl PyEmbeddings {
278280

279281
use EmbeddingsWrap::*;
280282
match &mut *embeddings {
281-
View(e) => e.set_metadata(Some(Metadata(value))),
282-
NonView(e) => e.set_metadata(Some(Metadata(value))),
283+
View(e) => e.set_metadata(Some(Metadata::new(value))),
284+
NonView(e) => e.set_metadata(Some(Metadata::new(value))),
283285
};
284286

285287
Ok(())

src/embeddings_wrap.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
use finalfusion::chunks::norms::NdNorms;
2-
use finalfusion::chunks::storage::CowArray1;
1+
use finalfusion::norms::NdNorms;
32
use finalfusion::prelude::*;
3+
use finalfusion::storage::Storage;
4+
use ndarray::{CowArray, Ix1};
45

56
pub enum EmbeddingsWrap {
67
NonView(Embeddings<VocabWrap, StorageWrap>),
@@ -32,7 +33,7 @@ impl EmbeddingsWrap {
3233
}
3334
}
3435

35-
pub fn embedding(&self, word: &str) -> Option<CowArray1<f32>> {
36+
pub fn embedding(&self, word: &str) -> Option<CowArray<f32, Ix1>> {
3637
use EmbeddingsWrap::*;
3738
match self {
3839
View(e) => e.embedding(word),

src/iter.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::cell::RefCell;
22
use std::rc::Rc;
33

4-
use finalfusion::prelude::*;
4+
use finalfusion::vocab::Vocab;
55
use numpy::{IntoPyArray, PyArray1};
66
use pyo3::class::iter::PyIterProtocol;
77
use pyo3::prelude::*;
@@ -35,7 +35,7 @@ impl PyIterProtocol for PyEmbeddingIterator {
3535
if slf.idx < vocab.words_len() {
3636
let word = vocab.words()[slf.idx].to_string();
3737
let embed = embeddings.storage().embedding(slf.idx);
38-
let norm = embeddings.norms().map(|n| n.0[slf.idx]).unwrap_or(1.);
38+
let norm = embeddings.norms().map(|n| n[slf.idx]).unwrap_or(1.);
3939

4040
slf.idx += 1;
4141

src/storage.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::cell::RefCell;
22
use std::rc::Rc;
33

4-
use finalfusion::prelude::{Storage, StorageView, StorageWrap};
4+
use finalfusion::storage::{Storage, StorageView, StorageWrap};
55
use ndarray::Array2;
66
use numpy::{PyArray1, PyArray2, ToPyArray};
77
use pyo3::class::sequence::PySequenceProtocol;
@@ -30,7 +30,7 @@ impl PyStorage {
3030

3131
let mut array = Array2::<f32>::zeros((rows, dims));
3232
for idx in 0..rows {
33-
array.row_mut(idx).assign(&storage.embedding(idx).as_view());
33+
array.row_mut(idx).assign(&storage.embedding(idx).view());
3434
}
3535

3636
array

src/vocab.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
use std::cell::RefCell;
22
use std::rc::Rc;
33

4-
use finalfusion::chunks::vocab::{NGramIndices, SubwordIndices, VocabWrap, WordIndex};
5-
use finalfusion::prelude::*;
4+
use finalfusion::vocab::{NGramIndices, SubwordIndices, Vocab, VocabWrap, WordIndex};
65
use pyo3::class::sequence::PySequenceProtocol;
76
use pyo3::exceptions::{IndexError, KeyError, ValueError};
87
use pyo3::prelude::*;
@@ -45,8 +44,8 @@ impl PyVocab {
4544
let embeds = self.embeddings.borrow();
4645
Ok(match embeds.vocab() {
4746
VocabWrap::FastTextSubwordVocab(inner) => inner.ngram_indices(word),
48-
VocabWrap::FinalfusionSubwordVocab(inner) => inner.ngram_indices(word),
49-
VocabWrap::FinalfusionNGramVocab(inner) => inner.ngram_indices(word),
47+
VocabWrap::BucketSubwordVocab(inner) => inner.ngram_indices(word),
48+
VocabWrap::ExplicitSubwordVocab(inner) => inner.ngram_indices(word),
5049
VocabWrap::SimpleVocab(_) => {
5150
return Err(ValueError::py_err(
5251
"querying n-gram indices is not supported for this vocabulary",
@@ -59,8 +58,8 @@ impl PyVocab {
5958
let embeds = self.embeddings.borrow();
6059
match embeds.vocab() {
6160
VocabWrap::FastTextSubwordVocab(inner) => Ok(inner.subword_indices(word)),
62-
VocabWrap::FinalfusionSubwordVocab(inner) => Ok(inner.subword_indices(word)),
63-
VocabWrap::FinalfusionNGramVocab(inner) => Ok(inner.subword_indices(word)),
61+
VocabWrap::BucketSubwordVocab(inner) => Ok(inner.subword_indices(word)),
62+
VocabWrap::ExplicitSubwordVocab(inner) => Ok(inner.subword_indices(word)),
6463
VocabWrap::SimpleVocab(_) => Err(ValueError::py_err(
6564
"querying subwords' indices is not supported for this vocabulary",
6665
)),

0 commit comments

Comments
 (0)