小编gsf*_*gsf的帖子

用于文本相似性的算法/库

我需要实现算法(或在开源库中找到一个)来评估文本的相似性.我需要一个有效的算法,给定两个任意文档集(相对较少数量的大块文本),它在它们之间创建匹配对 - 哪个文档最有可能从哪个文档生成.

我相信我会把它分成两部分 - 定义每对的相似系数 - 然后应用一些赋值问题算法.而对于分配算法,我可以找到很多解决方案,我找不到用于计算相似系数的好方法.

请注意,文档事先是未知的 - 文本的计算索引(如果有)也必须快速.

我知道汉明距离,Levenshtein距离一些其他算法的字符串差异.这不是我想要的 - 我正在使用文字而不是字符串.

我不是在寻找短语搜索算法​​以及像Lucene和Xapian这样的库(至少看起来像是这样).

可能是基于tf-idf的东西.

我想问题是,是否有一些东西已经解决了这个问题,或者是否有可能像lucete这样的库来做到这一点.

c++ algorithm text

5
推荐指数
1
解决办法
1564
查看次数

用新消息重新抛出Java异常,如果异常类型在方法声明列表中,则保留该异常类型

我正在尝试创建一个辅助方法,该方法将无需使用如下代码:

void foo() throws ExceptionA, ExceptionB, DefaultException {
  try {
     doSomething(); // that throws ExceptionA, ExceptionB or others
  } catch (Exception e) {
    if (e instanceof ExceptionA)
        throw new ExceptionA("extra message", e);
    if (e instanceof ExceptionB)
        throw new ExceptionB("extra message", e);

    throw new DefaultException("extra message", e);
  }
}
Run Code Online (Sandbox Code Playgroud)

问题是我需要同时在函数声明和函数主体中维护throws列表。我正在寻找如何避免这种情况并使更改抛出列表足够的方法,并且我的代码如下所示:

void foo() throws ExceptionA, ExceptionB, DefaultException {
  try {
     doSomething(); // that throws ExceptionA, ExceptionB or others
  } catch (Exception e) {
    rethrow(DefaultException.class, "extra message", e);
  }
}
Run Code Online (Sandbox Code Playgroud)

rethrow方法将足够聪明,可以从方法声明中识别出throws列表。

这样,当我更改方法在抛出列表中传播的类型的列表时,无需更改主体。

以下是可以解决问题的功能。问题是因为它不知道它将引发throws声明的异常类型必须说Exception,但是如果这样做,将要使用它的方法也需要指定它,并且整个思想使用抛出列表会变得地狱。 …

java exception rethrow

5
推荐指数
1
解决办法
7158
查看次数

使用 tee 打印到输出时为每一行添加前缀

我有这样的命令

command | tee /dev/tty | grep ...
Run Code Online (Sandbox Code Playgroud)

那说打印

hello
world
Run Code Online (Sandbox Code Playgroud)

我想改变这一点,以便命令输出中的每一行都带有前缀,在输出中或看起来像:

# hello
# world
Run Code Online (Sandbox Code Playgroud)

bash shell

5
推荐指数
1
解决办法
1678
查看次数

设置EXPECT_CALL以将调用重定向到原始方法

我有一个类,有几个相互依赖的方法.让我们说foo(),bar()和baz().

当我测试bar()时我需要模拟foo()的行为,当我测试baz()时我需要模拟bar()的行为.

如果我为baz模拟bar,我不能使用相同的mock类来测试带有模拟foo()的bar.

我的问题是我可以设置EXPECT_CALL来实际调用原始行为以及如何调用.这将消除创建多个Mock类的需要.

gmock

5
推荐指数
1
解决办法
3791
查看次数

扩展变量名中的宏值

我有

#define MACRO foo

#define Code(m) \
    m##Bar

Code(MACRO)
Run Code Online (Sandbox Code Playgroud)

我希望将其解析为 fooBar,但它被解析为 MACROBar。

我需要更改宏以通过其值而不是其名称来解析。

c c-preprocessor

5
推荐指数
1
解决办法
2956
查看次数

通过源提升精神解析

我希望能够解析一个数字,以存储其原始来源并跟踪其在源中的位置,并将其保留在结构本身中.

这是我到目前为止:

#include <boost/config/warning_disable.hpp>
#include <boost/spirit/include/qi.hpp>
#include <boost/spirit/include/phoenix_core.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
#include <boost/spirit/include/phoenix_object.hpp>
#include <boost/spirit/home/support/iterators/line_pos_iterator.hpp>
#include <boost/fusion/include/adapt_struct.hpp>
#include <boost/fusion/include/io.hpp>

#include <iostream>
#include <iomanip>
#include <ios>
#include <string>
#include <complex>

#include <boost/spirit/include/phoenix_fusion.hpp>
#include <boost/spirit/include/phoenix_stl.hpp>

struct Position
{
    Position()
        : line(-1)
    {
    }

    size_t line;
};

struct Number : public Position
{
    Number()
        : Position()
        , value(-1)
        , source()
    {
    }

    unsigned    value;
    std::string source;
};

using namespace boost::spirit;

BOOST_FUSION_ADAPT_STRUCT(Number,
                            (unsigned,    value)
                            (std::string, source)
                            (size_t,      line)
                          );

template <typename Iterator>
struct source_hex : …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-spirit boost-spirit-qi

4
推荐指数
1
解决办法
873
查看次数

在唯一键上提升 unordered_multimap 循环

在 boost unordered_multimap 中循环唯一键的最简单方法是什么。

例如我有这个:

std::set<int> used;
for (auto p : valuesMap)
{
    if (used.count(p.first))
        continue;
    used.insert(p.first);

    auto range = valuesMap.equal_range(p.first);
    if (p.first)
    for (auto v = range.first; v != range.second; ++v)
        //do something;
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点。似乎无序映射应该已经知道唯一键。

c++ boost unordered-map

4
推荐指数
1
解决办法
1898
查看次数

C++在编译时将月份作为数字

我有一个c ++项目,必须打印修订字符串.修订字符串是公司明智的,协议包括构建时间为yyyy/mm/dd.

我用它从构建系统中将其指定为宏,但这不再是一个选项,因为会混淆预编译的头文件(在日期更改时的增量构建中).

我想从编译器获得的生成日期,但要实现这个__DATE__,并__TIMESTAMP__给予一个月嗯.

有什么想法,我怎么能把月份作为数字?


根据下面的答案我完成的版本是:

#define __MONTH__ (\
  __DATE__ [2] == 'n' ? (__DATE__ [1] == 'a' ? "01" : "06") \
: __DATE__ [2] == 'b' ? "02" \
: __DATE__ [2] == 'r' ? (__DATE__ [0] == 'M' ? "03" : "04") \
: __DATE__ [2] == 'y' ? "05" \
: __DATE__ [2] == 'l' ? "07" \
: __DATE__ [2] == 'g' ? "08" \
: __DATE__ [2] == 'p' ? …
Run Code Online (Sandbox Code Playgroud)

c++ predefined-macro

4
推荐指数
1
解决办法
1754
查看次数

带参数的c ++模板策略

我是新来的.我正在创建一个政策说:

template <typename T,
          typename P1 = Policy1<T>,
          typename P2 = Policy2<T> >

{
    ...
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是某些策略有参数,当它们编译时它就可以了

template <typename T,
          typename P1 = Policy1<T, size_t N>,
          typename P2 = Policy2<T> >
Run Code Online (Sandbox Code Playgroud)

但是当它们是运行时我不确定提供策略类对象的最佳方式是什么......或者这不再是策略模式?

c++ policy templates class

4
推荐指数
2
解决办法
847
查看次数

golang得到一个类型的reflect.Type

是否有可能以及如何在不从类型创建对象并调用它的情况下获取类型的reflect.Type reflect.TypeOf(obj)

java中的内容是: MyType.class

reflection go

4
推荐指数
1
解决办法
4573
查看次数