2

以下代码计算语料库中每对元素之间的距离矩阵。但是,对于大型语料库,该过程变得相当冗长。我怎样才能将它与人造丝并行化?

use std::iter::Iterator;
use ndarray::Array2;

type DistanceFn = dyn Fn(&f64, &f64) -> f64 + Sync;

fn calculate(corpus: &[f64], distance_fn: Box<DistanceFn>) -> Array2<f64>  {
    let mut distances: Array2<f64> = Array2::zeros((corpus.len(), corpus.len()));
    for (i, m1) in corpus.iter().enumerate() {
        for (j, m2) in corpus.iter().enumerate() {
            distances[[i, j]] = distance_fn(m1, m2);
        }
    }
    distances
}

fn diff_distance(m1:&f64, m2:&f64) -> f64 {
    m1-m2
}

fn main() {
    let corpus = &vec![5.0,6.0,7.0];
    let matrix = calculate(corpus, Box::new(diff_distance));
    print!("{}", matrix)
}
4

0 回答 0