我对机器翻译感兴趣,更具体地说,我想检查两个字符串之间的相似性。我想知道是否有深度学习的方法来提取文本特征。我已经尝试过著名的统计方法,如余弦相似度、Levenstein 距离、词频等。
谢谢
matlab string-comparison feature-extraction machine-translation
我正在尝试使用类似的方法strcmp来比较“Hello 4”等命令并将 4 保留为变量
像这样的东西:
if(strcmp(c, "Hello %d") == 0){
int num = %d;
}
Run Code Online (Sandbox Code Playgroud) 我试图通过查找它们的线性表示来匹配Python中符号的"项链",我使用普通字符串.例如,字符串"AABC","ABCA","BCAA","CAAB"都表示相同的项链(如图).

为了得到一个概述,我只存储一个作为"代表"给定的项链相当于字符串.至于检查我是否存储了候选项链,我需要一个函数来规范任何给定的字符串表示.作为一种伪代码,我在Python中编写了一个函数:
import collections
def normalized(s):
q = collections.deque(s)
l = list()
l.append(''.join(q))
for i in range(len(s)-1):
q.rotate(1)
l.append(''.join(q))
l.sort()
return l[0]
Run Code Online (Sandbox Code Playgroud)
对于上面示例项链中的所有字符串表示,此函数返回"AABC",首先按字母顺序排列.
由于我对Python比较陌生,我想 - 如果我开始在Python中实现一个应用程序 - 这个函数对于生产代码来说已经"足够好"吗?换句话说:有经验的Python程序员会使用这个函数,还是有明显的缺陷?
我想问一下这个人的事情,我想问一下这个人是否想要"经典模式"或"高级模式",我将答案保存在一个变量中,并试图在IF中使用它,但它只是没有工作,让我展示我的代码的这一部分,例如:
int mode;
printf("\n Pick the desired mode: ");
scanf("%i",&mode);
if(mode=="Classic"){
printf("It worked!");
system("pause");
}
if(mode=="Advanced"){
printf("It worked!");
system("pause");
}
Run Code Online (Sandbox Code Playgroud)
在问题结束后它会直接结束并返回接近20亿的价值......
我以为我得到了错误,因为它是变量中的值,然后我尝试了一个字符串,但我得到了相同的结果!
@EDIT ==============================
好的,谢谢你们所有的帮助,你们在StackOverflow这里很快,哈哈
它最终是有史以来使用最strcmp容易使用的东西,易于理解和易于使用,修复了所有...我不知道这个,如果我以前知道它,它会节省很多时间(这个愚蠢的问题也在这里,对不起)!
我有两个字符串列表。我想将一个列表中的每个元素与另一个列表中的每个元素进行比较,如果至少其中一个元素匹配,则进行一些处理,否则不执行任何操作。
我不知道该怎么办。我确实有以下列表,我使用的代码是 SequenceEqual 但我的领导说它是错误的,因为它只是比较它是否相等并且不执行任何操作。我不能不同意,我想实现我上面提到的预期功能。请帮忙。正如您所看到的,顺序并不重要,这里 123 都在两个列表中,但顺序不同,因此它匹配,因此根据我的要求进行一些处理。
List<string> list1 = new List<string> () { "123", "234" };
List<string> list2 = new List<string> () { "333", "234" , "123"};
Run Code Online (Sandbox Code Playgroud) 假设你有一个std :: string和一个boost :: container :: string就像这样:
std::string stdString = "This is a test";
boost::container::string boostString = "This is a test";
Run Code Online (Sandbox Code Playgroud)
假设你想比较他们的内容; 以下是不可能的,因为我们无法比较他们的类型:
stdString == boostString // no operator "==" matches these operands
Run Code Online (Sandbox Code Playgroud)
然后,您可以选择使用它们的两种方法.c_str()从每个字符串中获取char*.不确定这是否有效地比较字符串,你试试:
stdString.c_str() == boostString.c_str() // compiles, but comparison returns false
Run Code Online (Sandbox Code Playgroud)
然后尝试仅使用std :: string中的c_str()方法:
stdString.c_str() == boostString // compiles, and comparison seems fine
Run Code Online (Sandbox Code Playgroud)
你出于好奇而尝试相反,它也有效:
stdString == boostString.c_str() // compiles, and comparison seems fine
Run Code Online (Sandbox Code Playgroud)
所以问题是,为什么这两个后面的比较似乎在第一个没有时正常工作?
奖金问题:这是比较这些字符串内容的不可靠方式吗?
完整代码示例:
#include <boost/container/string.hpp>
#include <iostream>
int main(int argc, char *argv[])
{
std::string stdString …Run Code Online (Sandbox Code Playgroud) 在 C 中使用以下程序,字符串比较不起作用:
#include<stdio.h>
#include<string.h>
int main(){
char ch[]="ABC";
printf("%d \n", strlen(ch)); // output 3
printf("%d \n", strlen("ABC")); // output 3
if(strcmp("ABC",ch)){
printf("\n Matched");
}else{
printf("\n Not matched"); // this will be output
}
if("ABC" == ch){
printf("\n Matched");
}else{
printf("\n Not matched"); // this will be output
}
}//ends main
Run Code Online (Sandbox Code Playgroud)
输出是:
3
3
Not matched
Not matched
Run Code Online (Sandbox Code Playgroud)
为什么字符串不匹配?
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"mnuSelected"])
{
ViewController *v = segue.destinationViewController;
if(self.searchDisplayController.active) {
NSIndexPath *indexPath = nil;
indexPath = [self.searchDisplayController.searchResultsTableView indexPathForSelectedRow];
v.str = [self.result objectAtIndex:indexPath.row];
NSIndexPath *rowSelected = nil;
rowSelected = [self.searchDisplayController.searchResultsTableView indexPathForSelectedRow];
v.UserSelected = rowSelected.row; //error in this line
}
else {
NSIndexPath *indexPath = nil;
indexPath = [self.tableView indexPathForSelectedRow];
v.str = [self.monthName objectAtIndex:indexPath.row];
NSIndexPath *rowSelected = nil;
rowSelected = [self.tableView indexPathForSelectedRow];
v.UserSelected = rowSelected.row;
}
return; }
}
Run Code Online (Sandbox Code Playgroud)
我在这一行有错误:v.UserSelected = rowSelected.row; 错误是:不允许将“ nsinteger”(又名“ long”)隐式转换为“ nsstring *”
我是Ruby的新手,并使用codecademy开始我的学习.我是关于比较器/关系运算符的主题,并//作为比较器给出了一个例子.我在读什么代码?我错了?因为我无法找到任何//意味着什么,我不记得这样做.
如果确实存在,那是什么意思?
假设我们有两个字符串,我想逐个字符地比较它们,以检查字符串a和字符串b的任何字符是否匹配?
一个例子:
$a = "Hello";
$b = "world";
Run Code Online (Sandbox Code Playgroud)
在上面的'o'中都存在两个字符串,所以算法应该回显exist.