Body: <p>I am working on a task that requires me to classify a large amount of mixed files on a backup drive (more than 10 TB with more than 32 million files) based on content. The included file types are documents, images, videos, executable, and pretty much everything in between.</p>
  
  <p>I am also required to create new tags or metadata that will allow for automatic classification of new files. It'd also allow for manual input of category. For each input I give to the system, the system would learn and improve its classification. </p>
  
  <p>Here is what I have come up with so far:</p>
  
  <ul>
  <li>Documents: classify using existing categories with packages like Nltk on Python. Alternatively, first run topic modeling using LDA or NMF and then classify. </li>
  <li>Images: use CNN. In case of unknown label, use VAE to cluster the images.</li>
  <li>Videos and other types of files: I do not know how to approach this.</li>
  </ul>
  
  <p>Since I am not sure about my approach, any input is greatly appreciated. </p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2018-06-06T08:51:14.637Z
Comments.Text: What kind of classification scheme are you looking to implement? Is it about technical metadata ("this is a video file, this is an image from a camera") or about content ("this video is of a children's party, this image is a cat with a caption")? Or something else?
Comments.UserDisplayName: Neil Slater
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2018-06-06T08:53:06.660Z
Comments.Text: How many files are there? That's probably a more important measure of the size of your task compared to space used on disk.
Comments.UserDisplayName: Neil Slater
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2018-06-06T09:22:41.187Z
Comments.Text: It is content classification (probably it is only applicable to documents, images, and videos). And there are more than 32 million files in that drive.
Comments.UserDisplayName: Khang Nguyen
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2018-06-06T11:20:12.447Z
Comments.Text: For video classification you could also use a CNN and classify single frames of the video. Then you have to come up with some decision function that classifies your video depending on all the single frame classifications. Using a CNN for full video classification is still a reasearch topic and really not an easy task but there are some recent papers about it regarding this. I am also assuming that you have a trained CNN on your wanted classes.
Comments.UserDisplayName: Marcel_marcel1991
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2018-06-06T11:36:09.620Z
Comments.Text: Do you have any specific goals regarding the content classification? E.g. are the classes supposed to cover specific uses of the files, are they for indexing/finding files (like user-supplied tags), do you know in advance what the classes should be, or just looking for any kind of split that would make finding content better? E.g. if you found a free classifier that identified animals in images and video, would you just use it because adding that label helps for 1% of your content, or are your goals more specific?
Comments.UserDisplayName: Neil Slater
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2018-06-07T06:21:18.673Z
Comments.Text: @Marcel_marcel1991: I see. I have no model yet, I just want to know which are the good ways to approach this before I start building anything.
Comments.UserDisplayName: Khang Nguyen
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2018-06-07T06:24:29.810Z
Comments.Text: @NeilSlater: It is mainly for better indexing/finding files, and to some extent, determining if a file is valuable based on tags. I already know what kind of classes there are (product lines) but any kind of split that would make finding content easier is welcome
Comments.UserDisplayName: Khang Nguyen
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2018-06-07T08:28:42.243Z
Comments.Text: @KhangNguyen hm okay. So in general this task you are trying to solve is very complex and a lot of work if you don't have a pretrained model or anything since these are multiple task that are all very complex on its own. Also the variational autoencoder for generating your classes automatically might also not be that easy and is still ongoing research. You should maybe first start with supervised training on a labeled dataset like ImageNet for your classification.
Comments.UserDisplayName: Marcel_marcel1991
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2018-06-07T12:18:01.580Z
Comments.Text: @Marcel_marcel1991: thanks! I will look into that.
Comments.UserDisplayName: Khang Nguyen
Tags: <machine-learning><classification>
Title: How to implement AI/ML to classify various types of files
UserDisplayName: Khang Nguyen
ThreadText: # How to implement AI/ML to classify various types of files
  
  (Asked by: username_0 on 2018-06-06)
  
  I am working on a task that requires me to classify a large amount of mixed files on a backup drive (more than 10 TB with more than 32 million files) based on content. The included file types are documents, images, videos, executable, and pretty much everything in between.
  
  I am also required to create new tags or metadata that will allow for automatic classification of new files. It'd also allow for manual input of category. For each input I give to the system, the system would learn and improve its classification.
  
  Here is what I have come up with so far:
  
  * Documents: classify using existing categories with packages like Nltk on Python. Alternatively, first run topic modeling using LDA or NMF and then classify.
  * Images: use CNN. In case of unknown label, use VAE to cluster the images.
  * Videos and other types of files: I do not know how to approach this.
  
  Since I am not sure about my approach, any input is greatly appreciated.
  
  **Tags:** machine-learning, classification
  
  > **Comments:**
  > **username_1**: What kind of classification scheme are you looking to implement? Is it about technical metadata ("this is a video file, this is an image from a camera") or about content ("this video is of a children's party, this image is a cat with a caption")? Or something else?  
  > **username_1**: How many files are there? That's probably a more important measure of the size of your task compared to space used on disk.  
  > **username_0**: It is content classification (probably it is only applicable to documents, images, and videos). And there are more than 32 million files in that drive.  
  > **username_2**: For video classification you could also use a CNN and classify single frames of the video. Then you have to come up with some decision function that classifies your video depending on all the single frame classifications. Using a CNN for full video classification is still a reasearch topic and really not an easy task but there are some recent papers about it regarding this. I am also assuming that you have a trained CNN on your wanted classes.  
  > **username_1**: Do you have any specific goals regarding the content classification? E.g. are the classes supposed to cover specific uses of the files, are they for indexing/finding files (like user-supplied tags), do you know in advance what the classes should be, or just looking for any kind of split that would make finding content better? E.g. if you found a free classifier that identified animals in images and video, would you just use it because adding that label helps for 1% of your content, or are your goals more specific?  
  > **username_0**: @username_2: I see. I have no model yet, I just want to know which are the good ways to approach this before I start building anything.  
  > **username_0**: @username_1: It is mainly for better indexing/finding files, and to some extent, determining if a file is valuable based on tags. I already know what kind of classes there are (product lines) but any kind of split that would make finding content easier is welcome  
  > **username_2**: @username_0 hm okay. So in general this task you are trying to solve is very complex and a lot of work if you don't have a pretrained model or anything since these are multiple task that are all very complex on its own. Also the variational autoencoder for generating your classes automatically might also not be that easy and is still ongoing research. You should maybe first start with supervised training on a labeled dataset like ImageNet for your classification.  
  > **username_0**: @username_2: thanks! I will look into that.  
  
  ---
  
  ## 0 answers
  
  