-
Notifications
You must be signed in to change notification settings - Fork 1
/
06-faq.rmd
58 lines (40 loc) · 2.67 KB
/
06-faq.rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# 常见问题
### 为什么 tm 包里词都连起来了?
不建议使用 tm 包。
建议使用 [text2vec](https://github.com/dselivanov/text2vec) 包,版本大于 v0.4 对于中文有很好的支持。对于输入的文本,建议均使用 enc2utf8 保证输入的中文文本是 UTF-8 编码。
#### 问题描述
tm 包对中文支持不好,直接输入中文就会有遇到下面的情况,应该只在 Windows (各种编码问题….)上会有,Linux下没有这个问题。
```r
library(tm)
xx<-c(
"进入", "一个", "平衡", "时代", "现在", "是", "住宅", "价格上涨",
"太快", "政府", "采用", "政策", "方式", "调控", "这些", "资金",
"就", "有", "往", "商业地产", "走", "的", "趋势", "因为", "商业地产",
"把", "自己", "划分", "到", "这", "一类", "去", "从", "职业",
"来说", "我", "可能", "是", "设计师", "医生", "老师", "记者",
"那", "我", "就", "做", "一个", "好", "的", "记者", "好", "的",
"医生", "这是", "社会", "上", "需要", "的", "现在", "这个", "时代",
"确实", "是", "一个", "特别", "好", "的", "时代", "也", "是")
corpus = Corpus(VectorSource(xx))
dtm_psy = TermDocumentMatrix(corpus)
tdm = DocumentTermMatrix(corpus,control = list(wordLengths = c(1, Inf)))
inspect(tdm)
Terms
Docs 20 30
奥运会\n 把\n 白领 北京市\n 背道而驰 本来 不\n 不大 不好 财经 采用
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
```
### 空行警告
```r
Output file: C:/test.txt
警告信息:
In readLines(input.r, n = lines, encoding = encoding) :
读"C:/test.txt'时最后一行...."
```
这个信息提示是待处理文本的结尾,应该有一个空行。为什么需要空行,可以参考这里:
http://www.zhihu.com/question/20018991
http://segmentfault.com/q/1010000000614237
一般来说这个警告对分词结果没有影响,这不是一个规定,而是一种约定。
一些早期的工具(编辑器/解释器/终端……等)会错误地认为:如果一个文件的结尾不是新行(没有回车或换行符)那么它读取到的内容不是正常结束,而是使用 ^Z(即 EOF Mark)结束的。这会导致这些工具不能正常工作。
一些编辑器,比如 Nano,会自动给每一个文档追加一个新行以避免这个问题。自然而然的,如果一个项目里有人使用了类似 Nano 的编辑器来写代码,他贡献的文件理所当然会有一个新行在结尾。那么制定代码规范的人也就理所当然的要求所有的人遵循这个约定。
虽然现在的编辑器大都先进到可以无视(自动处理)这个问题,但是留一个空行始终还是有一个巨大的好处。