我正在查看有关数据挖掘算法的教程,并且无法从教程中复制一行代码来生成我自己的“词汇表”变量(正如教程所称)。
教程页面上的代码基本上是:
List<string> x = textBox1.Text.Split(',').ToList();
var vocabulary = x.SelectMany(GetWords).Distinct().OrderBy(word => word).ToList();
但是当我将它复制到visual studio时,我收到以下错误:
当前上下文中不存在“GetWords”这个名称。
相信我,我不会遗漏教程中的任何内容。我正在寻找的是一种实现以下目标的方法:
采取这样做并生成这样的东西:
(忽略教程图片上的数字)
我尝试了以下代码,但它们返回字符串中的所有元素:
//var vocabulary = x.OrderBy(q => q).Distinct().ToList();
//var vocabulary = (from w in x
// select w).Distinct().ToList();
// IEnumerable<Word> vocabulary =
//(from w in x.Distinct()
// select new Word { Text = w.ToString() }).ToList();
任何帮助都将受到高度赞赏。
答案 0 :(得分:0)
private static IEnumerable<string> GetWords(string x)
{
return x.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
}
我应该彻底用Google搜索。这段代码有效。感谢您的帮助。
答案 1 :(得分:0)
如果输入看起来像您的CSV文件,请考虑:
import numpy as np
np.random.seed(100)
MAX_NUM = 100000
numbers = np.random.randint(0, MAX_NUM, size=100000)
problem_numbers = np.unique(np.random.randint(0, MAX_NUM, size=500))
alternative_numbers = np.random.randint(0, MAX_NUM, size=len(problem_numbers))
%timeit method_itzik(numbers, problem_numbers, alternative_numbers)
10 loops, best of 3: 63.3 ms per loop
# This method expects lists
problem_numbers_l = list(problem_numbers)
alternative_numbers_l = list(alternative_numbers)
%timeit method_mseifert(numbers, problem_numbers_l, alternative_numbers_l)
10 loops, best of 3: 20.5 ms per loop
%timeit method_divakar(numbers, problem_numbers, alternative_numbers)
100 loops, best of 3: 9.45 ms per loop
%timeit method_jdehesa(numbers, problem_numbers, alternative_numbers)
1000 loops, best of 3: 822 µs per loop
这将获取每行逗号之前的文本,然后删除重复项。