我有两个字幕文件.我需要一个函数来告诉它们是代表相同的文本还是相似的文本
有时只有一个文件中有"风正在吹......音乐在播放"的评论.但80%的内容都是一样的.该函数必须返回TRUE(文件代表相同的文本).有时会出现像1而不是l(1 - L)这样的拼写错误: 她只能放行李.当然,这意味着函数必须返回TRUE.
我的评论:
该函数应返回文本相似度的百分比 - 同意
"所有人都很开心"和"所有人都不开心" - 这里被认为是拼写错误,因此被视为同一文本.确切地说,函数返回的百分比将更低,但足够高以表示短语是相似的
请考虑是否要在整个文件或搜索字符串上应用Levenshtein - 不确定Levenshtein,但算法必须作为一个整体应用于文件.不过,这将是一个很长的字符串.
我正在使用MockMvc进行一些测试,我想验证JSON响应的结构.具体来说,我想确保属性的键存在,并且该值是某个类型或null.
{
"keyToNull": null, # This may be null, or a String
"keyToString": "some value"
}
Run Code Online (Sandbox Code Playgroud)
以下对我有用,但我想知道是否有办法将每组两个期望合并为一行,因为我有很多要检查的属性:
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import static org.hamcrest.Matchers.*;
.andExpect(jsonPath("$").value(hasKey("keyToNull")))
.andExpect(jsonPath("$.keyToNull").value(
anyOf(any(String.class), nullValue(String.class))))
.andExpect(jsonPath("$").value(hasKey("keyToString")))
.andExpect(jsonPath("$.keyToString").value(
anyOf(any(String.class), nullValue(String.class))))
Run Code Online (Sandbox Code Playgroud)
这hasKey()是必要的,因为另一个断言本身通过,因为MockMvc的实现映射中不存在的键映射为null:
.andExpect(jsonPath("$.notAKey").value(
anyOf(any(String.class), nullValue(String.class)))) // ok
Run Code Online (Sandbox Code Playgroud)
jsonPath().exists()也不起作用,因为在内部它比较了价值null.
我考虑过这样一个单独的方法:
private static <T> void assertNullableAttr(ResultActions res, String jsonPath, Class<T> type) throws Exception {
int split = jsonPath.lastIndexOf('.');
String prefix = jsonPath.substring(0, split), key = jsonPath.substring(split+1);
res.andExpect(jsonPath(prefix).value(hasKey(key)))
.andExpect(jsonPath(jsonPath).value(anyOf(any(type), nullValue(type))));
}
Run Code Online (Sandbox Code Playgroud)
但后来它迫使我以不自然的方式分割我的代码:
ResultActions res = mockMvc.perform(get("/api"))
// these …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用resteasy 2.0.1.GA将带有文件的表单上传到GAE应用程序中,使用我如何使用jax-rs上传多部分/表单文件建议的方法 ?
的index.html
<form action="/rest/upload" method="post" enctype="multipart/form-data">
<input type="text" name="name" />
<input type="file" name="file" />
<input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
Rest.java
@Path("")
public class Rest {
@POST
@Path("/rest/upload")
@Consumes("multipart/form-data")
public String postContent(@MultipartForm UploadForm form) {
System.out.println(form.getData().length);
System.out.println(form.getName());
return "Done";
}
}
Run Code Online (Sandbox Code Playgroud)
UploadForm.java
public class UploadForm {
private String name;
private byte[] data;
@FormParam("name")
public void setPath(String name) {
this.name = name;
}
public String getName() {
return name;
}
@FormParam("file")
public void setContentData(byte[] data) {
this.data = data; …Run Code Online (Sandbox Code Playgroud) 我@ResourceDependency在JSF组件中使用注释将Javascript和CSS文件添加到我的JSF页面中.
在我的Javascript文件中,我需要引用另一个资源文件(.swf文件,位于META-INF/resources中,如JSF所要求的).我试图#{resource['swf:file.swf']}在我的javascript代码中放置EL表达式,但它不会得到解决.
为了exacmle,对于服务器中的以下JS文件:
var instance = new JSClass();
instance.setResourceUrl("#{resource['swf:file.swf']}");
Run Code Online (Sandbox Code Playgroud)
浏览器得到:
var instance = new JSClass();
instance.setResourceUrl("#{resource['swf:file.swf']}");
Run Code Online (Sandbox Code Playgroud)
这是错的.
当我在CSS文件中放入相同的EL时,它会得到正确解析.对于服务器中的以下CSS文件:
.instance-css-class {
background: url("#{resource['swf:file.swf']}")
}
Run Code Online (Sandbox Code Playgroud)
浏览器得到:
.instance-css-class {
background: url("/webapp/javax.faces.resource/file.swf.jsf?ln=swf")
}
Run Code Online (Sandbox Code Playgroud)
这正是我需要的,但在JS文件中.
显然,我可以使用CSS作为问题的解决方法(创建一个DOM元素,将CSS类附加到它,然后读取并解析所需的样式属性).但是,是否有更优雅的方式来实现它?它是JSF库中的一个错误(我使用Mojarra 2.0.3,使用Jboss 6.1),还是有这种行为的原因?
请介意上面的代码是一个标签库的一部分,所以解决方法,例如那些无法使用.
编辑 - 似乎CSS解决方法不可行,因为我看不到从CSS文件获取CSS属性的方法.因此,任何(工作)解决方案也将很乐意接受.
java ×4
el ×1
file-upload ×1
hamcrest ×1
javascript ×1
jsf-2 ×1
jsonpath ×1
mockmvc ×1
nlp ×1
resteasy ×1
similarity ×1
text ×1