This paper presents a new adaptive learning algorithm to automatically design a neural fuzzy model. This constructive learning algorithm attempts to identify the structure of the model based on an architectural self-organization mechanism with a data-driven approach. The proposed training algorithm self-organizes the model with intuitive adding, merging and splitting operations. Sub-networks compete to learn specific training patterns and, to accomplish this task, the algorithm can either add new neurons, merge correlated ones or split existing ones with unsatisfactory performance. The proposed algorithm does not use a clustering method to partition the input-space like most of the state of the art algorithms. The proposed approach has been tested on well-known synthetic and real-world benchmark datasets. The experimental results show that our proposal is able to find the most suitable architecture with better results compared with those obtained with other methods from the literature.